《程序员修炼之路:从小工到专家》阅读笔记02
注重实效的途径 A Pragmatic Approach
有些提示和诀窍可以应用于软件开发的所有层面,有些想法几乎是公理,有些过程实际上普遍使用。但是人们几乎没有为这些途径建立这样的文档。
重复的危害
系统中的每一项知识都必须具有单一、无歧义、权威的表示。
DRY——Don't Repeat Yourself 不要重复你自己
重复是怎样发生的:
- 增加的重复。开发者觉得他们无可选择——环境似乎要求重复。
- 无意的重复。开发者没有意识到他们再重复信息。
- 无奈性的重复。开发者偷懒,他们重复,因为那样似乎更容易。
- 开发者之间的重复。同一团队的几个人重复了同样的信息。
无奈性的重复很常见,在我们的编程中体现的淋漓尽致,开发一个web系统,每次都是调用第一次的时候的,一些功能代码也是直接就Ctrl+C,Ctrl+V弄过来,然后改一改就OK了,实际上有好多重复,这就多了很多代码,但是一旦除了错误,很难找到源头,不知道从何改代码,所以自己以后写代码的时候一定要注意这个问题,在写代码的时候不能偷懒,为了避免以后有更多的麻烦。
正交性
消除无关事物之间的影响,写正交的系统,提高生产率与降低风险。
工具箱与库
当自己引入第三方工具箱和库时,要注意保持系统的正交性,要明智的选择技术。
编码
- 让你的代码保持解耦。
- 避免使用全局数据
- 避免编写相似的函数
测试
正交地设计和实现的系统也更易于测试,因为系统的各组件之间的交互是形式化的和有限的,更多的系统测试可以花在单个的模块级进行,这是好消息,因为与集成测试相比,模块级测试要更容易规定和进行得多。在《构建之法》中也看过软件测试的方法也是一些功能性测试。
可撤销性
如果某个想法是你唯一的想法,再也没有什么比这更危险的事情了
——Emil-Auguste Chartier,Propos sur la religion,1938
不存在最终决策。
灵活的架构
有许多人会设法保持代码的灵活性,而你还需要考虑维持架构、部署及供应商集成等领域的灵活性。
曳光弹
用曳光弹找到目标
曳光代码有很多的优点:用户能够及早看到能工作的东西;开发者构建了一个他们能在其中工作的结构;你有了一个集成平台;你有了可用于演示的东西;你将更能感受到工作进展。
曳光弹并非总能击中目标,曳光弹告诉你击中的是什么,那不一定总是目标,于是你调整准星,直到完全击中目标为止,这正是要点所在。
曳光代码也是如此,你在不能100%确定该去往何处的情形下使用这项技术,如果最初的几次尝试错过了目标——用户说:“那不是我的意思”,你需要的数据在你需要他时不可用,或是性能好像有问题,你不该感到惊奇,反而你应该高兴。
自己在写代码的时候要有大局观念,及时发现自己代码中的不足,采用正交性书写方法,减少后期的麻烦,同时也减少自己代码的重复,对于一些冗余代码要及时清理,还要加上注释,写函数的时候要注意不起相似名字的函数,避免调用错误。