首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

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
  • {
  •     /*已考虑无误*/
  • }

复制代码


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