15

我已经编程了大约一年,而且我写的所有东西都有效——从我的角度来看,它写得非常糟糕。我想知道是否有任何(免费)关于软件设计的好书可以为初学者提供一些指导?如果我对软件设计的思维过程有一点了解,我认为我不会遇到那么多问题。

4

18 回答 18

12

Head First Design Patterns可能是对 GoF“设计模式”一书的更温和的介绍

Steve McConnell 的Code Complete是一个很好的代码指南,包括如何在本身不支持它们的语言中使用好的策略。

Martin Fowler 的Refactoring主要涉及设计模式,但它是一个很好的代码目录,以及更好的编写方式(我读它的时间大约与我读“代码完成”的同时,几年前 [tsk tsk]阅读设计模式和“重构”对我如何看待我编写的代码产生了重大影响。为了更好,我喜欢这样想)。

这些都不是“免费的”。但是你想要多好的建议呢?如果你想投资你的事业,这是最便宜的方法。

于 2009-12-08T18:27:56.790 回答
7

DRYYAGNI对于初学者来说是很好的起点,你需要学习和理解OOP

关于设计模式(比 DRY 和 OOP 更高级和抽象),您可以从免费的Design Patterns - Java Companion中学习。它不是 Python 的事实不应该打扰你——经典的设计模式无处不在。

如果您想进一步了解DDDEric Evans 的免费 DDD 书籍),当然还有单元测试,不管您信不信,它会改进您的代码和作为设计师的您。

于 2009-12-08T18:24:58.633 回答
4

听起来你想要一本关于设计模式的书。

看看:设计模式 - 可重用的面向对象软件的元素。警告它不是特定于 Python 的。

你也可以在这个Python 设计模式的在线资源中学习。

Stackoverflow 用户@S.Lott也有很多他编写的非常好的 Python 资源。你可以在他的 Stackoverflow 页面上看到它们。

于 2009-12-08T18:23:01.870 回答
4

阅读其他人的代码。这是学习更好的设计原则的最佳方式。在你的工作中阅读人们的代码,在论坛上阅读人们的代码,看看开源项目......永远不要停止编码,因为最好的老师是你一路上犯的错误......

看看这本书,实用程序员,从熟练的到大师。这是一本很棒的书,可以帮助您填补您正在寻找的知识空白。

于 2009-12-08T19:10:01.303 回答
3

其他一些可能值得注意的原则:

CRAP:声音设计的四个原则——对于可用性来说,这些是很好的原则。

Pablo 的本月主题 - 三月:SOLID 原则- 也有一些好主意。

于 2009-12-08T18:53:31.830 回答
3

有一年的编程经验,我不会推荐设计模式(或 Head First Design Patterns),因为我认为设计模式(概念)最好在你有更多的编程经验后处理,也许更像是 5-10 年的经验.

我认为Andrew HuntDavid Thomas所著的 The Pragmatic Programmer: from Journeyman to Master这本书也许是您目前水平上最物有所值的最佳选择。这是对主题和内容的精彩总结(来自 Coding Horror 的 Jeff Atwood)。如果您买不起自己的副本,请使用馆际互借。

实用程序员的封面

另外两本与语言无关的经典书籍,强烈推荐给新程序员,您可以牢记在心,分别是Fred Brooks 的The Mythical Man-Month(1995 年出版的周年纪念版)和Steven McConnell 的Code Complete(第二版) .

这些书将帮助您扩展您的编程知识,而不会在您当前的开发阶段让您不知所措,并为成为更好的程序员打下坚实的基础。所有这些书都一直在为认真的程序员推荐的 编程 书籍中名列前茅,而且它们都足够“古老”,显然不是一种时尚,而是不受特定语言、环境或工具集限制的经久不衰的推荐。

于 2009-12-08T19:54:20.937 回答
2

看看这本书:Head First Design Patterns ...字面意思。看看这个。从图书馆。

于 2009-12-08T18:27:59.343 回答
2

这不是一本书(书太老了),但花几个小时阅读Portland Pattern Repository绝对是件好事。

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

于 2009-12-08T19:32:11.737 回答
2

我建议计算机程序的结构和解释,它以书本形式在线提供,以及在线课程。

这不是一本关于设计模式的书,但它将帮助您为构建应用程序开发良好的基础。

于 2009-12-08T20:14:50.560 回答
2

我肯定会添加另一本书。我认为Bob Martin 的Clean Code是一本非常好的书,可以告诉您如何编写可维护的代码。它引入了几个简单的规则,这些规则导致代码结构良好且可读性强。

于 2009-12-08T20:24:30.793 回答
2

学习优秀软件设计的最好方法是以多种不同的方式编写代码,阅读他人编写的代码,并直接了解哪些有效,哪些无效。

在编写代码时,请提出以下问题:

  1. 我将如何测试它?
  2. 我将如何调试它?
  3. 我发现自己一遍又一遍地在做什么?

我相信其他人有其他想法,基于他们自己的经验。

于 2009-12-08T20:54:27.820 回答
1

对于初学者来说, Head First Design Patterns将是一个很好的起点。它可能比四人帮更容易上手。

于 2009-12-08T18:28:06.927 回答
1

您可能应该了解更多有关面向对象编程的知识。这是一个基于 Python 的不错的教程:

Python 中的 OOP 教程

面向对象编程是一种组织程序的方式,它反映了您试图解决的问题中的事物。

HIH

...里奇

于 2009-12-08T19:02:36.277 回答
1

学习不同的语言!我喜欢 python,尽管每个人都这么说,但我的 python 更好,因为我知道 java。(有些人抱怨从 java 开始会导致一开始编写笨重的 python,但如果你已经或多或少知道在 python 中做某​​事的简单方法,那么你就可以安全了。)

让我在这里做一点电锯手术。第一次写python很容易。我用 vim 编写它,因为我可以并且因为我喜欢 vim。如果您有 IDE,则很容易维护和重构 java。我在 Eclipse 中编写 java,因为没有它我会绝望。但关键是,用一种语言编写,迫使你使用抽象的工具和一种使抽象更容易的工具,会慢慢地塑造你的大脑,使其编码更抽象。您将把它带回 python,即使首选的抽象会略有不同。

于 2009-12-08T19:05:41.113 回答
1

哇,我想知道为什么直到现在还没有人说你真的不应该太深入理论。一年后,你的代码很难看。没有什么可做的。如果你完成了大部分你想要完成的事情,那已经非常棒了。但是你不能用理论欺骗你的大脑。继续写,对你的代码感到愤怒。这是写得更好的最好方法。花点时间思考如何尽可能多地以更易读/可用/可维护的方式编写工作代码。并且:阅读其他人的代码 + 获得对 Ur 代码的评论!应该有比U写得更好的人。以身作则!

并且可能有 20% 的 Ur 编程时间(这意味着如果每天使用 U 代码,一年不超过 2 个月!)得到一些理论。

为什么不从大量的理论开始呢?你杀死了你的动机和你的本能。但是当你坐在那里尝试解决问题时,它主要是关于正确的本能。由于理论太多,你会过度思考问题和你的解决方案。但无论你读了多少书,你的本能仍将停留在你的经验水平上。

(对不起,如果英语不好。不是我的母语)

于 2009-12-08T21:02:54.933 回答
0

获取四本书的帮派 - 设计模式.. 但请不要过度遵循它并尝试在任何地方使用 Singleton :)

只要知道它并明智地使用它。在那之后,研究好的开源代码并尝试从他们的结构中学习。我建议谷歌代码和 sourceforge

于 2009-12-08T18:26:22.817 回答
0

根据您的背景(在某种程度上,经验),您可能还想研究基本算法。像《算法导论》这样的书是一个好的开始。

除此之外,我还投票支持 Head First Design Patterns。GoF 可以更好地作为以后的参考。

于 2009-12-08T18:37:53.603 回答
0

忘记书。以我的经验(包括担任 OO 设计课程的讲师和作家的时间),有些人可以做设计,有些人则不能——这是一种天赋,就像成为雕塑家一样。充其量,阅读有关该主题的书籍将使您的设计很糟糕,如果您没有才华的话。

于 2009-12-08T18:44:58.190 回答