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

时间:2010-06-01 07:05:43

标签: design-patterns design-principles

我已经编写了几年,但仍然觉得我的知识不够广泛,不能成为一名专业人士。我研究了一些与设计模式有关的书籍,但我知道还有很多其他书籍。

那么有人可以列出你认为有助于学习成为更好的程序员和更专业的模式和原则吗?

编程语言我的工作:C#,Ruby,Javascript。

8 个答案:

答案 0 :(得分:8)

百科知识的设计模式将无处可寻。大量的体验应用它们。这将告诉您何时使用它们以及何时不使用它们。

那就是说,原来的Design Patterns书仍然是我的最爱之一。随身携带其他模式。

答案 1 :(得分:3)

答案 2 :(得分:3)

原则是我开始的地方,模式紧随其后。

原则:有一整套木筏,但这些是我获得实用里程的:

很多这些(当组合在一起时)被称为SOLID(面向对象的设计)。

模式:

  • 我最喜欢的一英里是Dependency Inversion Principle(DIP),通常也称为(或至少非常相似)Inversion of control(IoC)。它非常适合抽象出接口背后的数据访问实现。 Martin Fowler称它为一个不同的名称(抱歉,没有我的“企业应用程序架构模式”副本在我面前。)
  • Lazy Load也很有用。
  • Factory pattern是众所周知的一个 - 这是有充分理由的。
  • Facade pattern也帮助我摆脱了麻烦。

维基百科有一个很好的Software design patterns列表,假设你还没有看到它。

最后要记住的是,有三种基本类型的模式(加上第四类多线程/并发);它可以帮助你了解这些类别,并在你做某事时牢记它们,它们是:

  • 创建型
  • 结构
  • 行为

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我认为最好的方法是学习很多语言。 LISP,Scheme,Python,Smalltalk,Erlang,Prolog,Eiffel等等

与他们一起构建东西。

答案 5 :(得分:0)

Martin Fowler Patterns of Enterprise Application Architecture与其他开发人员建立共享词汇表(例如存储库,活动记录,域模型,工作单元)。

道格拉斯·克罗克福德Javascript: The Good Parts真正了解Javascript的运作方式。

我真的建议进入TDD(测试驱动开发)。有一堆很好的TDD书,但如果你正在进行棕色地带开发(我们大多数人都是),那么我真的推荐Michael Feather的Working Effectively with Legacy Code

最后,这本书向您展示了如何重构和清理代码: 鲍勃叔叔的Clean Code

答案 6 :(得分:0)

除了编写代码之外,您还应该尝试阅读代码。例如,从开源项目下载代码,尝试修补它并了解它正在做什么以及为什么。 或者尝试从以前的项目中查看自己的代码。你现在会做些什么?你能理解你为什么以你的方式建造它吗?

您可能还想了解敏捷社区中的一些实践。特别是Test Driven Development是一种提高代码质量的好方法。

答案 7 :(得分:0)

我想, 书中描述的所有模式 Head First Design Pattern 是设计师/程序员必须知道的最小模式。我建议这本书开始学习设计模式。 另一本书设计模式工作书也很适合练习。