YFROBOT创客社区
标题:
转帖:完美主义者的程序员特征 <二>
[打印本页]
作者:
雷柏
时间:
2014-12-31 09:04
标题:
转帖:完美主义者的程序员特征 <二>
转自:
http://bbs.21ic.com
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这种坑爹的的常量,则会被他心里狠狠地鄙视:
“丫丫的,原创者这是在炫智商、秀优越吗?”。
#define MODE_NAME_1 (1) /* 简单描述模式1 */
#define MODE_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);
}
else if ((stat == MODE_NAME_1) || (stat == MODE_NAME_2))
{
do_something(ch);
}
else
{
/*已考虑无误*/
}
复制代码
为了效率,可以牺牲一点代码可阅读性。
欢迎光临 YFROBOT创客社区 (http://yfrobot.com.cn/)
Powered by Discuz! X3.1