新闻中心

EEPW首页 > 嵌入式系统 > 牛人业话 > 一线研发之声 之 完美主义者的程序员特征

一线研发之声 之 完美主义者的程序员特征

作者:时间:2014-07-30来源:网络收藏

  3.、换行、替换、{}保护、还有效率。

本文引用地址:http://www.eepw.com.cn/article/256101.htm

  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

  {

  /*已考虑无误*/

  }

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



关键词: 代码 常量 空格

评论


相关推荐

技术专区

关闭