设计原则对于完全的新手来说是什么?

15

我已经学习编程一年了,我写的所有代码都能够运行,但是从我的角度来看,这些代码的质量非常低。我想知道是否有任何(免费)好的软件设计方面的书籍可以为初学者提供一些指导?如果我了解一些软件设计的思考过程,我认为我就不会遇到那么多问题了。


5
LOL。我读了很多书后,总是会说“天啊,这真的很丑”,能够认识到这一点就表明你已经是顶尖开发者中的佼佼者了。 :) http://www.codinghorror.com/blog/archives/000530.html - Dave Mateer
你是在寻求一般性建议还是特别关注Python?如果这是一个关于“如何学习最佳软件设计实践”的一般性问题,将其设为社区维基可能是个好主意。 - Per Wiklander
我正在寻求一般性建议。我认为设计原则和流程应该独立于任何一种编程语言,所以我没有特别指定。 - Enrico Tuvera Jr
1
免费?那么从图书馆借阅书籍,然后购买您发现有用的书籍如何?跨馆借书将允许您以几乎没有或很少的成本借阅存在的任何书籍。个人推荐:《敏捷开发艺术》、《代码大全》。 - Christopher Bottoms
就像其他人所说的那样,能够识别设计问题是关键。只需不断编写更多的代码即可。你的糟糕代码会让你吃亏,并且你再也不会这样做了 :-) - Ed S.
2
我居住在一个没有公共图书馆(菲律宾马尼拉)的地区,并且像那些书籍对于我这样的人来说都很贵,所以我不得不依靠网络上的免费资源来自学。 - Enrico Tuvera Jr
18个回答

12

Head First 设计模式 可能是对 GoF "设计模式" 书籍的更加温和的介绍。

Steve McConnell 的 Code Complete 是一个良好的指南,涵盖了很多关于编程的内容,包括如何在不支持本地策略的语言中使用良好的策略。

Martin Fowler 的 Refactoring 大量参考了设计模式,但它是一份关于一般代码和更好的编写方式的优秀目录(我大约在同一时间读了“Code Complete”,比“设计模式”晚了几年),"重构"对我如何审视自己写的代码产生了重大影响,我想这是有益的。

以上所有书籍都不是 "免费的",但你想要多好的建议呢?如果你想要投资自己的职业生涯,这是最便宜的方法。


7

DRYYAGNI是初学者的好起点,你需要学习和理解OOP

关于设计模式(比DRY和OOP更高级和抽象),你可以从免费的设计模式-Java伴侣中学习。它不是Python也不应该让你烦恼-经典的设计模式可以应用到任何地方。

当你想要更进一步时,请查看DDDEric Evans的免费DDD书籍)和当然单元测试,信不信由你,这将改善你的代码和你作为设计师的能力。

1
如果你使用的不是Java/C#(Python,C++等),那么你实际上不需要超过GOF模式的一半。 - Macke
1
是的,但知识总是受欢迎的。它也能区分孩子和真正的男人 :) - cherouvim

4

很明显,设计模式书籍是非常相关的,但是(如果我的经验反映了当我刚开始学习编程时阅读该书的情况),他可能会误解它。应用模式的原因只有在您创建了几个较大的应用程序之后才变得显而易见。我推荐Sandi Metz的《Ruby实战指南》(http://www.poodr.com/)。即使您不是Ruby程序员也可以参考这本书。 - Dionysis

4
阅读他人的代码是学习更好的设计原则的最佳途径。在工作中阅读其他人的代码,在论坛上阅读其他人的代码,查看开源项目……不要停止编码,因为最好的老师是你一路走来犯过的错误……
查看书籍《程序员修炼之道》。这是一本帮助填补你所寻找的知识空白的好书。

3

1
+1 for SOLID。此外,值得一提的是Bob Martin的权威文章:http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod以及他的书《敏捷软件开发:原则、模式和实践》(http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445),这是一个关于面向对象设计“最新技术”的非常好的概述。 - Sean McMillan

3

我有一年的编程经验,不建议学习设计模式(或《Head First Design Patterns》),因为我认为设计模式(概念)最好在你有更多的编程经验后再学习,也许需要更多像5-10年的经验。

我认为,Andrew HuntDavid Thomas 的书《The Pragmatic Programmer: from Journeyman to Master》可能是您目前水平得到最大回报的最佳选择。这里有一个关于主题和内容的精彩摘要(由Coding Horror的Jeff Atwood提供)。如果你买不起自己的副本,可以使用馆际互借

cover of The Pragmatic Programmer

还有两本经典书籍也是针对编程语言不特定的新手程序员强烈推荐的,它们分别是Fred Brooks所写的The Mythical Man-Month(1995年出版的周年纪念版)和Steven McConnell所写的Code Complete(第二版)。

这些书将帮助扩展你的编程知识,而不会在你目前的开发阶段让你感到不知所措,并为成为更好的程序员打下坚实的基础。所有这些书都经常位于推荐 编程 书籍 的榜首,它们都足够“老”,以至于它们显然不是一时的流行,而是经久不衰的建议,不受特定语言、环境或工具集的限制。


《实用程序员》是一本非常好的书,但在我看来,设计模式应该排在第一位。我在刚刚有了大约1年的编程经验时读过它,对我来说真是一次真正的启示。在没有听说过设计模式的情况下编程5年甚至10年,对我来说似乎是一种巨大的时间浪费。 - Adrian Grigore
2
我相信一个新手开发者需要先学会走路(即在小范围内编程),然后再学会奔跑(即在大规模应用或系统编程中)。而设计模式主要针对大规模应用或系统编程。我更希望开发者在盲目使用设计模式过度设计每个应用程序之前,先学好基础(基础知识)。 - mctylr
我不是很了解这个馆际互借的东西。我猜它是一种服务,允许你从不在你所在地区的图书馆借阅图书,但是你能从另一个国家借阅图书吗?我在你提供的那个网站上搜索了《程序员修炼之道》,离我最近的库存该书的图书馆在香港。 - Enrico Tuvera Jr
是的,图书馆间互借是指在图书馆之间借阅书籍。个人而言,我总能够在国内找到资源,但我相信图书管理员说过如果需要的话他们也可以向国际发送请求。您需要向当地图书馆的图书管理员了解详情。 - mctylr

2

2

这不是一本书(书已经过时了),但在波特兰模式库花费几个小时阅读绝对是值得的。

虽然它也不是教程,但它有很好的代码示例,以及关于设计模式和编程的精彩讨论。它是学习如何像程序员思考的绝佳资源。


2
我建议阅读《计算机程序的构造与解释》这本书,它可以在线阅读,并提供在线课程。
虽然这不是一本关于设计模式的书,但它将帮助您建立构建应用程序的良好基础。

2

我肯定会再添加一本书。我认为Bob Martin的《代码整洁之道》是一本非常好的书,可以告诉你如何编写易于维护的代码。它介绍了几个简单的规则,可以让代码结构清晰易读。


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