比如I/O经典问题,用户输入的可能是非期待的,我们要检查。但这个检查要做多少次了?
现在基本都是基于模块化开发,一个大模块分成多个小模块,又分成多个。。。。这样层层嵌套,直至函数,变量。
如果每个都做检查,工作量将是非常巨大。如何选择了?
严以律己宽以待人
这就是说:我们考虑“用户”可能会有错误输入,这个用户可能是一个模块的调用者,也可能是真正的输入。对待他们要“宽”一些。
但一个模块,或者一个函数,大部分都是自己调用,这些自己调用的,因为自己明白,会传递什么,自己要接受的又是什么,所以可以严格一些。比如写了一个辅助函数,这个函数的参数非常明确,肯定传递过来的是一个正确的。也就是严格要求调用者必须一定输入符合要求的,不可能有其他情况。
这样看,我们只需要在模块入口检查,而模块内部自己把握,有效防止了同一个参数由于传递的原因重复的检查。
要达到这个效果,我们必须明确未来的使用者,如果只有自己则可以拟定一个非常严格的协议,如果是其它人,那就要宽松一些。
这样有效的完成数据检查,而不过分累赘。
这主要是在多人开发时,单独完成不同模块会带来的问题。如果协商的好的啊,不用也是一样的。但要是都采用这种原则的话,可以减少沟通,协商。