关于范例:什么编程概念/技术提高了您的工作效率?

What programming concept/technique has boosted your productivity?

我已经编程好几年了,从那时起,我学到了一些使我成为更好的程序员的概念和技术(如OOP、MVC、regex、hashing等)。我也感觉到能够学习几种语言(Basic,Pascal,C/C++,LISP,Prolog,Python),我用一种非常可能的方式拓宽了我的视野。但从一段时间前开始,我觉得我没有学到任何新的好"诀窍"。你能提出一些有趣的概念/技巧/技巧,让我重新开始学习流程吗?


一个好的范例转换总是允许你以不同的方式看待事物,并成为一个更好的开发人员。我建议你读一读函数式编程,也许会学习像haskell或scheme这样的函数式语言。


雅格尼(你不需要它)和DTSTTCPW(做最简单的可能有效的事情)

很容易花很多时间思考边缘案例,发现你已经实现了一些完全无用的东西。我相信一个更好的方法是敲出一个简单的原型,然后戳出并生成它,直到您完全了解这个领域,能够创建生产代码为止。

然而,要认识到,无论您喜欢与否,您的原型都将演变为生产代码。所以要记住这一点。


学习如何使用您的IDE和工具。对我来说,这导致了生产率的大幅提高。

例如:

  • 学习如何使用源代码级调试器
  • 使用诸如Purify/BoundsChecker之类的工具
  • 代码分析

我意识到我在和自己约会,但那是很重要的一步。还有很多。

任何时候,你可以改变思考问题的方式或解决问题而不必撤销之前的工作,都是巨大的收获。过程、工具等都可以帮助解决这个问题。不要把自己局限于寻找提高生产力的银弹技术。

看着富有成效的人工作,让他们告诉你他们在做什么,为什么也很有价值。


如果我诚实的话,使用和学习一个像.NET这样的伟大框架确实提高了我的工作效率。

我常常感到惊讶的是,由于人们对框架中已经存在着相同的功能的无知,他们愿意重新发明什么。


  • 设计模式。学习如何打破对实现和继承的依赖,而依赖接口(契约)则改变了我对编程的看法。

  • 调试。一旦我了解了如何实际地单步执行代码并逐行检查底层状态,它就彻底改变了我对代码进行故障排除的方式。

  • 练习,练习:直到一个相对较短的时间前,我才意识到在工作之外继续学习我的技能有多重要。在家里犯的错误和解决方案使我在工作中成为更好的程序员,反之亦然。如果你想擅长某件事,学习永远不会停止,编程也不例外。


  • 如果您想将您的经验扩展到Web编程中,您应该尝试对HTTP请求/响应范式有一个很好的处理。这将使您更容易创建Web应用程序,因为您了解底层框架。

    (http://en.wikipedia.org/wiki/hypertext_transfer_协议)


    VIM快速参考卡。在我开始使用高级VIM(宏、插件)之后,我已经停止在手动编码过程中执行任何重复的操作。

    除此之外,在晚上的工作中,当没有人打扰你的时候,你给了我最大的好处。


    试着从用户的角度去了解事物。例如:

    • 了解如何编写有意义的错误消息
    • 了解如何生成可用的应用程序
    • 学习一些基本的速度优化技术

    请记住,用户看到的是您的应用程序,而不是您的代码。


    敏捷,尤其是测试驱动的开发。自从面向对象设计发明以来,软件开发中发生的最好的事情。


    如果我只需要选择一个,我会说测试驱动设计,也就是TDD:在您逐步添加特性之前,编写单元测试(并检查它们是否失败)。


    关于编码,我认为设计模式和体系结构模式总是很好的,可以帮助您编写更干净/更好的代码。

    对于方法论,我会建议非常好的敏捷开发。有许多技术和方法(我个人很喜欢极限编程)和阅读可以让你忙碌并改进你的一般方法。

    最后我要说的是学习像Ruby这样的新语言


  • 设计模式
  • Scrum过程
  • 磁盘评估(以及对其如何应用于协同软件开发的理解)
  • stackoverflow.com(当然!)
  • 谷歌
  • …我肯定还有其他的东西

    我会看一些结合了OO和功能元素的新语言,比如C或scala。


    我得到了以下范例的帮助:

    1)自下而上编程2)自顶向下编程(C,Pascal)3)面向对象编程(Simultalk,Java)4)函数编程(Lisp,Mathematica)

    加入了一些逻辑编程(prolog)。


    代码生成器。它们是软件工程中最好的东西。

    是否要用ASM编写所有项目?不,让我们从C++生成它。或者从JVM上面的某个东西,它努力地生成必要的机器代码。

    在整个地方复制相同的源代码,但坚持使用一种坚持行噪声的语言?使用宏。

    想用一种没有的语言来使用lambda吗?找出如何伪造所需的匿名名称和变量范围,然后生成样板文件。

    没有一种现成的语言完全符合您的思维模式、所需的语法甚至是语义?为新的编译器编写一个编译器。

    更好的语言很好。更好的设计模式是不错的。Emacs很棒。但是编译器是我们这个领域的全部力量所在。我怀疑他们没有在其他答案中提到的唯一原因是我们无法想象没有任何编程。


    双手放下。事实上,我不需要为我的业务对象编写数据库功能,这是非常有用和节省时间的。


    高层次的理解,用适当的依赖性创建良好的抽象,是长期受益的。例如,德米特定律就是一个重要的指导方针。我还建议阅读EricEvan的领域驱动设计


    学习Smalltalk有助于我提高工作效率。它是一种很容易学习的语言,可以非常快地建立起来。要获得惊人的生产力帮助,请查看Seaside,它是构建Web应用程序的框架。而且,如果你只习惯了花括号语言,小对话也会让你微笑!


    复制/粘贴技术