《程序员修炼之路:从小工到专家》阅读笔记02

注重实效的途径  A Pragmatic Approach

  有些提示和诀窍可以应用于软件开发的所有层面,有些想法几乎是公理,有些过程实际上普遍使用。但是人们几乎没有为这些途径建立这样的文档。

重复的危害

  系统中的每一项知识都必须具有单一、无歧义、权威的表示。

  DRY——Don't Repeat Yourself  不要重复你自己

重复是怎样发生的:

  • 增加的重复。开发者觉得他们无可选择——环境似乎要求重复。
  • 无意的重复。开发者没有意识到他们再重复信息。
  • 无奈性的重复。开发者偷懒,他们重复,因为那样似乎更容易。
  • 开发者之间的重复。同一团队的几个人重复了同样的信息。

  无奈性的重复很常见,在我们的编程中体现的淋漓尽致,开发一个web系统,每次都是调用第一次的时候的,一些功能代码也是直接就Ctrl+C,Ctrl+V弄过来,然后改一改就OK了,实际上有好多重复,这就多了很多代码,但是一旦除了错误,很难找到源头,不知道从何改代码,所以自己以后写代码的时候一定要注意这个问题,在写代码的时候不能偷懒,为了避免以后有更多的麻烦。

正交性

  消除无关事物之间的影响,写正交的系统,提高生产率与降低风险。

工具箱与库

  当自己引入第三方工具箱和库时,要注意保持系统的正交性,要明智的选择技术。

编码

  • 让你的代码保持解耦。
  • 避免使用全局数据
  • 避免编写相似的函数

测试

  正交地设计和实现的系统也更易于测试,因为系统的各组件之间的交互是形式化的和有限的,更多的系统测试可以花在单个的模块级进行,这是好消息,因为与集成测试相比,模块级测试要更容易规定和进行得多。在《构建之法》中也看过软件测试的方法也是一些功能性测试。

可撤销性

如果某个想法是你唯一的想法,再也没有什么比这更危险的事情了

    ——Emil-Auguste Chartier,Propos sur la religion,1938

 不存在最终决策。

灵活的架构

有许多人会设法保持代码的灵活性,而你还需要考虑维持架构、部署及供应商集成等领域的灵活性。

曳光弹

用曳光弹找到目标

  曳光代码有很多的优点:用户能够及早看到能工作的东西;开发者构建了一个他们能在其中工作的结构;你有了一个集成平台;你有了可用于演示的东西;你将更能感受到工作进展。

  曳光弹并非总能击中目标,曳光弹告诉你击中的是什么,那不一定总是目标,于是你调整准星,直到完全击中目标为止,这正是要点所在。

  曳光代码也是如此,你在不能100%确定该去往何处的情形下使用这项技术,如果最初的几次尝试错过了目标——用户说:“那不是我的意思”,你需要的数据在你需要他时不可用,或是性能好像有问题,你不该感到惊奇,反而你应该高兴。

  自己在写代码的时候要有大局观念,及时发现自己代码中的不足,采用正交性书写方法,减少后期的麻烦,同时也减少自己代码的重复,对于一些冗余代码要及时清理,还要加上注释,写函数的时候要注意不起相似名字的函数,避免调用错误。

原文地址:https://www.cnblogs.com/flw0322/p/11064886.html