2010-06-01 40 views
5

我一直在编码几年,仍然觉得我的知识不够广泛,不能成为一名专业人员。我研究过一些与设计模式有关的书籍,但我知道还有很多其他的书籍。程序员必须/应该知道的模式和原则列表是什么?

那么有人可以列出你认为很好学习成为更好的程序员和更专业的模式和原则吗?编程语言我工作:C#,Ruby,Javascript。

回答

1

我认为最好的方法是学习大量的语言。 LISP,Scheme,Python,Smalltalk,Erlang,Prolog,Eiffel和其他许多人

并与他们建立东西。

8

百科知识的设计模式将无处可去。足够的经验应用他们会。这会教你什么时候使用它们,什么时候不使用它们。

那就是说,原来的Design Patterns这本书还是我的最爱之一。随时随地捡起其他图案。

+5

*而不是*时 - 绝对是最重要的事情要记住。许多人起初似乎都会模式疯狂,并试图将所有东西都变成模式,有时候使得非常简单的代码变得更加复杂,从而无法获得如此巨大的收益。 – 2010-06-01 07:25:11

+0

@ ho1 +1,真实! “对于锤子,一切看起来像钉子”。 – 2010-06-01 09:54:37

3

我目前正在学习/致力于提高整体编码的一些更独立于语言的技能。

  • 写作干净,可读和可维护的代码
  • 重构为OOP语言
  • 正确地使用一个适当的源的控制系统
  • 正确的对象的设计。 Sourcesafe不计算:D
  • 单元测试&测试驱动开发
  • 正确应用设计模式。学习它们是一回事,学习何时何地应用它们是非常棘手的。

一些链接预定recommnendation问题@ SO:

当然并且,Pragmatic Programmer books如前面的评论中提及。

+0

感谢罗伊斯先生,你列出的任何建议书? – pang 2010-06-01 07:41:38

+0

我发现Pragmatic Bookshelf系列非常有用 - http://pragprog.com/titles。由于本系列中的大部分内容都很短,所以它们也可以提供很好的介绍性文字:)我相信在这本好书中有不少文章,我会尽力找到它们,然后编辑答案。 – anonymous 2010-06-01 09:36:50

0

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

Douglas Crockford的Javascript: The Good Parts真正了解Javascript的工作原理。

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

最后,本书向您展示了重构和清洁代码的重要性: Bob叔叔的Clean Code

0

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

您可能还想了解一些敏捷社区出现的实践。尤其是Test Driven Development是提高代码质量的好方法。

3

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

原则:有一个整体筏,但这些都是我从获得实际行驶里程:

很多这些(当分组togetget她)被称为SOLID(面向对象设计)。

模式:

  • 我最喜欢的biggets一英里是Dependency Inversion Principle(DIP),通常也被称为(或至少非常相似)Inversion of control(IOC)。抽象出接口后面的数据访问实现真的很好。 Martin Fowler称它为一个不同的名称(对不起,我没有我的“企业应用程序架构模式”副本)。
  • Lazy Load也是有用的。
  • Factory pattern是一个非常知名的 - 有很好的理由。
  • Facade pattern也帮助我摆脱困境。

如果您还没有看过,维基百科有一个不错的清单Software design patterns

最后要注意的是,有三种基本类型的模式(加上第四类多线程/并发);它可以帮助刚刚知道这些类别,并承担他们记住,当你正在做的事情,他们是:

  • 创力
  • 结构
  • 行为
+0

我认为Martin Fowler称DIP为依赖注入(DI)。 http://en.wikipedia.org/wiki/Dependency_injection – anonymous 2010-06-01 09:38:25

2

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

0

我认为, 书中描述的所有模式头设计模式是设计者/程序员必须知道的最低限度。我建议本书开始学习设计模式。 另一本书,设计模式工作簿也是很好的练习。

相关问题