注重实效的偏执

有时候大多技术人员自己的不可能出现某些问题而确信不疑,就像他们相信自己所写的代码一样,不可能没有按照自己的意思执行某些功能 。

但现实往往是比较公正的,就像在《程序开发心理学》里提到的一样的观点,“你不可能写出完美的软件,因为完善的软件不存在”。那如何将这错误的直觉转变从而有利于自己开发呢?

在实际的开发过程中,我们都要时刻对接其他同事写的功能、接口以及第三方的模块,相对于第三方还好一些。其他协作伙伴有一些代码的实现方式、编码规划以及业务逻辑和自己的方式不太一样,

那么我们需要怎么应对呢?高效的程序员通常会采用防卫性的编码,因为他们在某种程序上也不大相信自己代码,他们总是按着合约设计编程,出现问题时按着合约设计来检查,从测试者的角度分析问题、解决问题。

功能与调用着的合约指的是如果调用都满足了被调用功能的所有前置条件,则被调用 功能保证在其完成时、所有后条件和不变项将为真。

举例说明一下,比如说在方法a中调用有一个方法是计算平均数的方法b,考虑一个情况,计算平均数不应该为0, 那么参数校验应该是在调用者a方法进行校验,还是应该在被调用者b方法校验?

正常的情况下应该是在调用者处进行校验,通过早发现早诊断要比运行计算时再发现要好的多,另外,被调用者不确定所有传给他的参数是什么,如果过多的参数判断就将使功能代码更加的职业不再单一。

合约有一种主义不变项,指的是任何情况下不能违反正常的业务逻辑、事实情况。书中举了一个例子,说的是有一张消费卡,同一条消费记录不能两次记录到账户中,即使其他任何失败,其结果都应是不处理,而不是

记录两次重复的记录。以这个为原则更能清楚的指导开发出来的软件更合乎业务逻辑。

你可能感兴趣的:(读书分享,架构,编程思想,架构,微服务)