完美主义者的程序员特征 <二>

来源:本站
导读:目前正在解读《完美主义者的程序员特征 <二>》的相关信息,《完美主义者的程序员特征 <二>》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《完美主义者的程序员特征 <二>》的详细说明。
简介:本文介绍了一些完美主义者的程序员特征,有利于初级程序编写者养成良好的编程习惯

3.空格、换行、常量替换、{}保护、还有效率。

if((long_state_var==1)||(long_state_var==2)||((ch>0x2F)&&(ch<0x3A)))do_something();

看到这种代码,他就感觉浑身难受、头晕恶心…..

狂吼一声,这段代码立马会给改成这样。

if((long_state_var==1)||(long_state_var==2)||((ch>0x2F)&&(ch<0x3A))){do_something();}

复制代码

长字符行要换行,模块要添加{}保护,这是做人的底线。

再瞄一眼,会发现没有空格也很让人难过。

赶紧快速编辑了而下,舒了口气。

if((long_state_var==1)||(long_state_var==2)||((ch>0x2F)&&(ch<0x3A))){do_something();}

复制代码

加上空格的美化,更有层次感。

当他开始维护这段代码,搞清楚逻辑后,无意义的常量就会被处理成这样的,长变量名也会被适当缩短。而0x2F、0x3A这种坑爹的的常量,则会被他心里狠狠地鄙视:

“丫丫的,原创者这是在炫智商、秀优越吗?”。

#defineMODE_NAME_1(1)/*简单描述模式1*/#defineMODE_NAME_2(2)/*简单描述模式2*/if((stat==MODE_NAME_1)||(stat==MODE_NAME_2)||((ch>='0')&&(ch<='9')))/*数字字符*/{do_something(ch);}

复制代码

常量用宏替代,这样的代码意图会比较清晰。

后来他感觉,还是有些不妥。干脆又改了下,最后变成这样。

#include……if((stat==MODE_NAME_1)||(stat==MODE_NAME_2)||is_digit(ch)){do_something(ch);}

复制代码

is_digit的加入,使得代码与注释浑然天成。

后来他在优化过程中发现,ch的值在99%的情况下都满足'0'~'9',

这个时候,这段代码又会被优化成这样的。

if(is_digit(ch)){do_something(ch);}elseif((stat==MODE_NAME_1)||(stat==MODE_NAME_2)){do_something(ch);}else{/*已考虑无误*/}

为了效率,可以牺牲一点代码可阅读性。

4.没有不明何意的常量。

常量的含义,通常只有原创者才知道。

如果没有特别的说明,没有一定的经验,这个程序回头在阅读时就难以看懂。

求哪位高手来一段鲜明对比的源码吧?

5. if 必有else,switch 必有default。

在他的程序里你不会看到一个单一的if语句,哪怕else确实什么都不需要处理,你也会看到这样的代码。

if(is_condition_true()){do_something();}else{/*donothing*/}

复制代码

因为,在多年的工作经验中,他发现,系统的崩溃,多数死在else里面。这样的代码,告诉别人也告诉自己,此处的else是经过充分考虑,的确没有需要处理的。下次自检程序时,此处就可以快速跳过。

同样的道理,每一个switch,其default,也是经过深思熟虑的,充分防错。

switch(state){caseSTATE_XXXX:break;caseSTATE_YYYY:break;........default:/*donothing*/break;}

提醒:《完美主义者的程序员特征 <二>》最后刷新时间 2024-03-14 01:01:53,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《完美主义者的程序员特征 <二>》该内容的真实性请自行鉴别。