程序员的信任感
作者:yinwm
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
现在很流行的RoR是一个有Coding By Convention讲究的框架,尤其是从我道听途说来的ActiveRecord机制。
简单说一下,就是我有一个类叫做User,有id,name等属性,那么我就可以直接使用一个叫做findByName的方法从数据库里面获得这个user。而findByName是不需要提前定义的,因为RoR会帮你处理,他发现没有这个方法,那么就去一个地方同意处理,看到你要find,而且是byName,那么她就去帮你搞定。
但是这里面我有一个问题,就是如果我写了findByName1这样的方法会如何?结果估计很简单,死翘翘。其实写错的可能性是不小的,那么为什么ActiveRecord的作者会这样写呢?我觉得这是一个程序员的信任感的问题,也就是他相信我们这些使用者不会写错。当然了,写错了倒霉的是我们自己。
而还有一种场景,就是很多时候,库作者是不信任使用者的。比如java里面就经常遇到encoding转码时候输入一个encoding的名字,然后外面必须try catch一个UnSupportedEncodingException。我觉得这就是库开发者的一种不信任,或者跟进一步,他是对程序运行的正确性的一种自我保护。更多的存在于需要编译的语言中。而且有人说过,一些比较下层的代码是不需要这种检查的,为什么,还不是因为是自己写的,自己相信自己。
那么,我提出一个问题,就是这种检查的尺度是什么?
都检查,开发者累死,开发效率必然不高。都不检查,那么一些尽早,尽快发现问题的可能性就没有了。这个权衡很难,我们也应该看看别人的优秀的API是如何设计的。