我已经编程好几年了,从那以后我学到了几个让我成为更好的程序员的概念和技术(即OOP,MVC,正则表达式,散列等)。我也觉得能够学习几种语言(基础,pascal,C / C ++,lisp,prolog,python)我以一种非常正确的方式拓宽了我的视野。但是从一段时间以前我觉得我没有学到任何新的好“技巧”。你能否提出一些有趣的概念/技巧/技巧,可以让我重新学习学习流程?
答案 0 :(得分:3)
良好的范式转换总能让您以不同的方式看待事物并成为更好的开发者。我建议您阅读functional programming,然后学习Haskell或Scheme等函数式语言。
答案 1 :(得分:3)
YAGNI(你不需要它)和DTSTTCPW(做最简单的事可能有效)
很容易花费大量时间考虑边缘情况,并发现你已经实现了一些完全没用的东西。我相信一个更好的方法是淘汰一个简单的原型,然后戳它并刺激它,直到你很好地理解域来创建生产代码。
但是,要认识到,无论您喜欢与否,您的原型都将演变为生产代码。所以记住这一点。
答案 2 :(得分:2)
学习如何使用IDE和工具。这对我来说导致了更高的生产力提升。
例如:
等。我意识到自己在约会,但这些都是重要的一步。还有更多。
任何时候你都可以改变你对问题的思考方式或解决问题,而不必撤销以前的工作,这是巨大的收获。流程,工具等都可以提供帮助。不要仅限于寻找能够提高生产力的银弹技术。
看着富有成效的人工作并让他们告诉你他们在做什么以及为什么也是非常宝贵的。
答案 3 :(得分:2)
如果我诚实,使用,和学习,像.NET这样的优秀框架确实提高了我的工作效率。
我常常对人们愿意重新发明的事情感到惊讶,因为他们忽略了框架中已经存在的相同功能。
答案 4 :(得分:1)
AGILE,特别是测试驱动开发。自面向对象设计发明以来,软件开发最好的事情。
答案 5 :(得分:1)
关于编码,我会说design patterns和architecture patterns总是很好看,可以帮助你编写更干净/更好的代码。
对于方法论,我会建议敏捷的敏捷开发。有许多技巧和方法(我个人都喜欢extreme programming)和阅读可以让你忙碌并改善你的一般方法。
最后我要说学习像Ruby这样的新语言
答案 6 :(得分:1)
答案 7 :(得分:1)
设计模式。学习如何打破对实现和继承的依赖,并依赖于接口(契约),改变了我对编程的看法。
调试。一旦我弄清楚如何实际逐步执行代码并逐行检查基础状态,它就彻底改变了我对代码进行故障排除的方式。
练习,练习:我没有意识到,除了工作之外,在相对较短的时间内继续学习我的技能是多么重要。我在家制作的错误和解决方案使我在工作中成为更好的程序员,反之亦然。如果你想要擅长某些东西,学习就永远不会停止,编程也不例外。
答案 8 :(得分:1)
如果您希望将您的体验扩展到Web编程,您应该尝试对HTTP请求/响应范例进行良好处理。这将使您更容易创建Web应用程序,因为您了解底层框架。
(HTTP)://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
答案 9 :(得分:1)
如果我必须选择一个,我会说测试驱动设计,也就是TDD:在逐步添加功能之前写入单元测试(并检查它们是否失败)。
答案 10 :(得分:1)
VIM Quick Reference Card。在我开始使用高级vim(宏,插件)之后,我在手动编码时停止了任何重复操作。
除此之外,Scrum和晚上工作,没有人打断你给了我最高的利益。
答案 11 :(得分:1)
尝试从用户的角度学习观察事物。 例如:
请记住,用户会看到您的应用,而不是您的代码。
答案 12 :(得分:0)
代码生成器。它们是软件工程中最好的东西。
您想在asm中编写所有项目吗?不,让我们从C ++生成它。或者来自JVM上方的东西,它们努力地生成必要的机器代码。
在整个地方复制相同的源代码,但坚持使用一种坚持线路噪音的语言?使用宏。
想用不具备它们的语言使用lambdas吗?弄清楚如何伪造匿名名称和变量范围,然后生成样板。
现有的语言都不符合您的思维模式,理想的语法甚至语义?为新的编写编译器。
更好的语言很好。更好的设计模式很好。 Emacs太棒了。但编译器是我们所有领域的所有力量所在。我怀疑他们在任何其他答案中都没有提到的唯一原因是我们无法想象没有任何编程。
答案 13 :(得分:0)
我会看一些结合了OO和功能元素的新语言,比如C#或Scala。
答案 14 :(得分:0)
高水平的理解,创建具有适当依赖性的良好抽象,是长期的回报。例如,Law of Demeter是一个重要的指导原则。我还建议你阅读Eric Evan的Domain Driven Design
答案 15 :(得分:0)
nHibernate放下手。我不需要为业务对象编写数据库功能这一事实非常有用并且节省了时间。
答案 16 :(得分:0)
我按以下顺序帮助了以下范例:
1)自下而上的编程 2)自上而下编程(C,Pascal) 3)面向对象编程(Smalltalk,Java) 4)函数式编程(lisp,Mathematica)
抛出一些逻辑编程(prolog)。
答案 17 :(得分:0)
学习Smalltalk帮助我提高了工作效率。这是一种易于学习的语言,可以非常快速地构建。要获得令人惊叹的生产力帮助,请查看Seaside,它是构建Web应用程序的框架。而且,如果你只习惯大括号语言,Smalltalk也会让你微笑!
答案 18 :(得分:-1)
复制/粘贴技术