《程序员修炼之道:从小工到专家》第二章:注重实效的途径(1)

一、重复的危害

系统中的每一项知识必须具有单一、无歧义、权威的表示,这就是DRY原则(Don‘t Repeat Yourself)。

与此不同的做法是在两个或多个地方表达同一事物。如果你改变其中一处,你必须改变其它各处。

重复是怎样发生的

  • 强加的重复(环境使然)
  • 无意的重复
  • 无耐性的重复(开发者偷懒,如何避免?记住“欲速则不达”,现在节省几秒钟,以后会付出数小时甚至更长时间的代价来维护)
  • 开发者之间的重复(如何避免?鼓励开发者之间相互进行主动的沟通,阅读他人的文档或代码)

复用变得容易

你所要做的是营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易.

二、正交性

什么是正交性

几何学中,两条直线相交,它们就是正交的,这两条直线互不影响。

在计算机技术中,该术语用于表示某种不想依赖性或是解耦性,如果两个或更多事物中的一个发生变化,不会影响其他事物,这些事物就是正交的。

正交的好处

消除无关事物之间的影响

  • 提高生产率:改动得以局部化,所以开发时间(分模块)和测试时间(单元测试)得以降低;促进复用;正交组件进行组合
  • 降低风险:有问题的代码区域可以被隔离开来;系统更健壮;得到更好的测试;不会与特定的供应商、产品、平台绑定在一起。

应用正交原则的几种方式

  • 项目团队:每个人负责相对独立的事情
  • 设计:设计模式——模块化、基于组件、分层(MVC)
  • 工具箱和库:引入第三方工具箱和库时,要注意保持系统的正交性。
  • 编码:让你的代码保持解耦;避免使用全局数据;避免编写相似的函数(养成不断批判自己代码的习惯,寻找任何重新进行组织、以改善其结构和正交性的机会,这个过程叫做重构)
  • 测试:单元测试

正交性和DRY原则紧密相关,运用DRY原则,你是在寻求使系统中的重复降至最小;运用正交性原则,你可以降低系统各组件的相互依赖。

三、可撤销性

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

要把决策视为是写在沙滩上的,而不要把它们刻在石头上。大浪随时可能到来,把它们抹去,所以在制定决策时,要考虑到可撤销性。

与此相配备的是代码的架构需要具有灵活性,将第三方的东西封装在接口后面,无论使用何种机制,让它可撤销。如果某种东西是自动添加的,那它也可以自动去掉。

阅读原文:程序员修炼之道:从小工到专家

学院君

学院君 has written 548 articles

资深PHP工程师,Laravel学院院长