小土刀

新博客地址 -> wdxtub.com

【简约之美】常识

这是一本小册子,电子版刚刚200页出头,估计纸质版就是一百来页。可是翻开这本书,立刻就能感受到它的与众不同,有别于其他讲软件工程的通常开篇就是大道理,这里一开始说的是《常识》,一本改变美国历史进程的书。我就在想,呼,看来作者野心不小啊。自顶向下的revolution不多,我孤陋寡闻一时也只能想到The Glorious Revolution,这本书虽然离“光荣”还有些距离,但的确给我了不少启发。


作者很强调的一个事情,就是要把软件设计真正以一种科学的精神看待。就像物理学家都想找第一推动,继而有了各种各样的规则定理公理,是不是存在类似牛顿三定律那样的软件设计的科学呢?有,至少作者是这么认为的,虽然在我看来这些注定只能是经验公式,不过就像经典力学不会因为量子力学出现而完全被抛弃一样,在很多时候,这些公式能给出可能更正确的答案,那就不妨且行且珍惜。

所以我们想知道,软件的第一推动是什么,这本书给出的答案是:帮助其他人。在设计软件时,应当将目标——帮助他人——视为应该考虑的最重要因素,这样,我们才能认识并了解软件设计的真正科学。

软件设计科学的目标应该是: 确保软件能提供尽可能多的帮助。 其次,我们通常希望软件可以给大家提供持续的帮助。所以,第二个目标是: 确保软件能持续提供尽可能多的帮助。

接着就是四大定律:

变化定律:程序存在的时间越久,它的某个部分需要变化的可能性越大。

缺陷定律:在程序中新增缺陷的可能性与代码修改量成正比。

简洁定律:软件任何一部分的维护难度,反比于该部分的简洁程度。

测试定律:你对软件行为的了解程度,等于你真正测试它的程度。

从这些定律中我们可以推出很多有用的结论和认清现实:

事实:好程序员和差程序员的差别就在于理解能力。差劲的程序员不理解自己做的事情,优秀的程序员则相反。 

条例:“好程序员”应当竭尽全力,把程序写得让其他程序员容易理解。 

事实:每个写代码的人都是设计师。 事实:设计与民主无关,它应当由个人完成。 

条例:要做多少设计,应当正比于未来软件能够持续为人们提供帮助的时间的长度。 

条例:未来的某些事情,是我们所不知道的。 

事实:程序员犯的最常见也是最严重的错误,就是在其实不知道未来的时候去预测未来。 

条例:最安全的情况是,完全不尝试预测未来,所有的设计决策都应当根据当前确切知道的信息来做。  

事实:在落实变化法则时,软件设计师容易犯的三个错误(也就是本书中的“三大缺陷”)是: 编写不必要的代码 代码难以修改 过分追求通用 

条例:直到真正要用了才编写代码,清理掉用不到的代码。 

条例:代码的设计基础,应当是目前所知的信息,而不是你认为未来要发生的情况。 

事实:如果设计让事情更复杂,而不是更简单,就犯了过度工程的错误。 

条例:在考虑通用时,只需要考虑当前的通用需求。 

条例:采用渐进式开发和设计,可以避免三大缺陷。

条例:最好的设计,就是能适应外界尽可能多的变化,而软件自身的变化要尽可能少。 

条例:永远不要“修正”任何东西,除非它真的有问题,而且有证据表明问题确实存在。 

条例:理想情况下,任何系统里的任何信息,都应当只存在一次。 

事实:简洁是相对的。 

条例:如果你真的希望成功,最好是把产品简化到傻子也能懂。 

条例:要保持一致。 

条例:代码可读性主要取决于字母和符号之间的空白排布。 

条例:名字应当足够长,能够完整表达其意义或描述其功能,但不能太长,以免影响阅读。 

条例:代码应当解释程序为什么这么做,而不是它在做什么。

条例:简洁离不开设计。 

条例:你可以这样增加复杂性: 扩展软件的用途; 新增程序员; 做无谓的改变; 困于糟糕的技术; 理解错误; 糟糕的设计或者不做设计; 重新发明轮子; 背离软件原来的用途; 

条例:可以通过考察生存潜力、互通性、对品质的重视,判断某种技术是否“糟糕”。 

条例:通常,如果某件事情变得非常复杂,也就意味着深藏在表面的复杂之下,设计出了问题。 

条例:在复杂性面前,问问自己“真正要解决的问题是什么”。 

条例:大多数麻烦的设计问题,都可以用在纸上画图或写出来的办法找到答案。 条例:要应付系统中的复杂性,可以将系统分解成独立的小部分,逐步重新设计。 

事实:所有可行的简化,其核心问题都是:怎么做,才可以让事情处理或是理解起来更容易。 

条例:如果遇到不可解决的复杂性,在程序外面妥善包装上一层,让其他程序员更容易使用和理解。 

条例:推倒重来只有在一些非常有限的情况下才是可以接受的。 

还是那句话,软件设计是一个实践活动,所以用下面这句话做结束仍然是再恰当不过了:

“纸上得来终觉浅,绝知此事要躬行”

评论

热度(27)

  1. 小a小土刀 转载了此文字
    很有启发性,一定要找时间看看那。
  2. 井一小土刀 转载了此文字
  3. 木帛小土刀 转载了此文字
  4. 小宇宙予爱正能量小土刀 转载了此文字
    小土刀叨
©小土刀 | Powered by LOFTER