程序员必须/应该知道的模式和原则清单是什么?

5
我已经编码几年了,仍然觉得我的知识不够广泛,无法成为职业程序员。我学习了一些与设计模式相关的书籍,但我知道还有很多其他的东西。
那么,有人能列出您认为是学习成为更好的程序员和更专业的原则和模式吗?
我使用的编程语言:C#,Ruby,Javascript。
8个回答

8

对设计模式有百科全书般的知识并不能让你有所收获,多应用它们才行。这样可以让你知道在什么时候使用它们,在什么时候不要使用。

话虽如此,原版《设计模式》书籍仍然是我最喜欢的之一。在学习过程中,可以掌握其他的模式。


5
“何时使用”和“何时不使用”——这绝对是需要记住的最重要的事情。许多人一开始会疯狂地使用模式,试图将所有东西都变成模式,有时候为了没有任何收益而使非常简单的代码变得更加复杂。 - Hans Olsson

3

我正在学习并努力提高编码技能,以下是一些与语言无关的技能。

  • 编写整洁、易读和可维护的代码
  • 重构
  • 面向对象编程语言中的正确对象设计
  • 正确使用源代码控制系统。Sourcesafe不算 :D
  • 单元测试和测试驱动开发
  • 正确应用设计模式。了解它们是一回事,了解何时和何处应用它们则更为棘手。

以下是一些关于书籍推荐的问题链接 @ SO:

当然,正如早先评论中提到的那样,实用程序员书籍也是必不可少的。

感谢Roys先生,您有什么推荐的书籍吗? - pang
我发现Pragmatic Bookshelf系列非常有用 - http://pragprog.com/titles。由于该系列中的大多数书籍都相当短,它们也是很好的入门读物 :) 我相信在SO上有很多关于好书的帖子,我会尝试找到它们并编辑答案。 - anonymous

3

我会从原则开始,模式紧随其后。

原则:有很多原则,但以下是我实际应用中得到的实惠:

其中很多(组合在一起)被称为SOLID(面向对象设计)。

模式:

  • 我最喜欢的设计原则是依赖倒置原则(DIP),也被称为(或者至少非常类似于)控制反转(IoC)。它非常适合在接口后面抽象出数据访问实现。Martin Fowler给它起了一个不同的名字(抱歉,我手头没有《企业应用架构模式》的副本)。
  • 延迟加载也很有用。
  • 工厂模式是非常著名的一种——有充分的理由。
  • 外观模式也帮助我避免了麻烦。

维基百科有一个相当不错的软件设计模式列表,假设您还没有看过它。

一件需要记住的最后一点是,模式分为三种基本类型(加上第四类多线程/并发)。知道这些类别并在做某事时牢记它们可能会有所帮助,它们是:
  • 创建型
  • 结构型
  • 行为型

我认为马丁·福勒将DIP称为依赖注入(DI)。http://en.wikipedia.org/wiki/Dependency_injection - anonymous

2

掌握工具(例如编程范例、模式、源代码控制、单元测试...)是必要的,但这还不足以称自己为“专业人士”:在我看来,真正专业的程序员的标志是能够理解客户需要什么。不幸的是,这种知识很难从书本中学到。


1

我认为最好的方法是学习多种编程语言。LISP、Scheme、Python、Smalltalk、Erlang、Prolog、Eiffel等等。

然后用它们来构建东西。


0

我建议使用Martin Fowler的企业应用架构模式与其他开发人员建立共享词汇(例如存储库、活动记录、域模型、工作单元)。

Douglas Crockford的Javascript语言精粹可以帮助你真正理解Javascript的工作原理。

最后,如果你正在进行棕地开发(我们大多数人都是),我强烈推荐Michael Feather的遗留代码重构手册。这是一本关于TDD(测试驱动开发)的好书。

最后,这本书向你展示了重构和清洁代码的实现方式: Uncle Bob的代码整洁之道


0
除了编写代码,你还应该尝试阅读代码。例如,从开源项目中下载代码,尝试调整它并理解它在做什么以及为什么这样做。 或者尝试回顾之前项目中的自己的代码。现在你会有什么不同的想法?你还能理解为什么当时要这样构建它吗?
你也可以研究一些敏捷社区提出的实践方法。特别是测试驱动开发,是提高代码质量的好方法。

0

我认为,《Head First设计模式》一书中描述的所有模式都是设计师/程序员必须了解的最低要求。我建议从这本书开始学习设计模式。 另一本书,《设计模式工作手册》也很适合练习。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接