对一种常见BUG的思考

来源:互联网 发布:js 设置焦点到input 编辑:程序博客网 时间:2024/04/29 19:33

我们在编程过程中经常会遇到一对相反的操作逻辑,如是Encode、Decode(编码和解码),Encrypt、Decrypt(加密和解密),Serialize、Deserialize等等。

我发现当这两个单词是一样长且形状相似的时候特别容易看错,如Encode和Decode,不仔细看还真看不出来有什么区别。而两个单不一样长或是形状不相象时就不容易看错了,Serialize和Deserialize就很少会看错。从心理学的角度来说,当我们在编程过程中,浅意识中我们会通过单词的轮廓来识别不同的单词。如果两个单词的轮廓比较相似的话就很容易认错。

以上提到的Encode、Decode是容易看错的单词,而Save和Load确不容易看错,因为这两个单词的轮廓差别比较大。但是当Save和Load放到其实单词时的时候情况又会发生变化,例如onSaveSuccess和onLoadSuccess,这是看错的可能性就会比单独的Save和Load大的多,因为单独的Save和Load中,这两个单词可以给人留下差别较大的轮廓。而onSaveSuccess和onLoadSuccess就不这样了,这里Save和Load的差别不足以人留下差别较大的轮廓。

这种问题最直接的影响就是使程序产生BUG,本来该调用Encode的地方确调用了相反的操作。如果软件界面就也有这样的操作则会让用户执行误操作,想想如果执行的相反的操作后果是多么可怕的呀。

要避免这样的问题,就要避免轮廓相似的符号,如Encode和Decode我把它们写成Enc和Decode、把onSaveSuccess和onLoadSuccess写成onSaveOk和onLoadSuccess,两个符号的轮廓差别很大时,我们基本就不会认错啦。

原创粉丝点击