天天看点

关于软件可扩展性与代码防御性编程的一点思考

软件可扩展性我从程序员的角度来理解,应该是这样的:

代码应该是可扩展的,便于他人阅读的,代码是非暴力的(非暴力的意思是说我修改了一个地方,其它与之类似的地方时页同时修改或者说只需修改很小的一部分,典型的例子是字符串的国际化问题,我见过n多人写的代码都不太好,而且经常都振振有词)

我感觉国人做软件的最大一个问题是:很多时候以为做出功能就很牛B了,都没有考虑软件的健壮性,易用性,和对意外事件的处理,这点也是国外软件与国内软件最大的区别。(典型的例子是ms)。记得翁恺当年说过国内很多程序员是想当然,很多情况下只考虑if part,至于else part他从来不考虑,因为他们很自豪的说:else part的情况应该不会出现,或者说这个软件的主要功能实现在if部分,else部分无所谓。而如果真正出现了该问题又经常找借口。。。

编程精粹那本书说要进行防御性编程,以上那种coding方法我想偏离了防御性太久,另外,程序员能力矩阵中提高的高级能力也没达到(防御性编程必须会),在微软软件开发都是要保证代码100%没有错误才能提交的,100%可能有点夸张,但至少说明了一点,将代码写好不是一件容易的事(典型的例子是编程珠玑那本书说的二分搜索的例子。。。。)

记得一本书上提到过真正的软件中,防错的代码要比实现功能的代码多很多,具体比例多少我忘了,但我觉得应该是3:7,防错的代码占7成。

我一直在想国人其实挺聪明的,但为什么软件业一直不如印度,尤其印度的tester那真是牛B啊。。。记得ACM icpc上多次tester都是印度的。。。。

印度搞test那思维真是缜密。。我觉得我们真是悲剧。。。

继续阅读