代码规范_1:代码的可读性

  • 代码易于理解
  • 可读性

表面层次

  • 名字:装入信息
  • 大小写,下划线

审美

  • 代码看上去一致
  • 列对齐
  • 审美按块组织
  • 代码分成段落
  • 分格一致
// 代码组成段落
class FrontendServer{ public: FrontendServer(); ~FrontendServer(); //Handlers void ViewProfile(HttpRequest *request); void SaveProfile(HttpRequest *request); void ViewProfile(HttpRequest *request); //Request/Reply Utilities string ExtarctQyeryParam(HttpRequest *request); }; 

注释

流程

//最小化嵌套
if(user_result==SUCESS){
  if(permisiion_result!=SUCCESS){
     reply.Done();
     return;
  }
  reply.W();
}esle {
  reply.w();
}
reply.Done

拆分超长的表达式

  • 用解释的变量
//不好代码
if line.split(':')[0].strip=="root";
...

//好的代码
usename=linesplit(':')[0].strip
if username=="root"
...
  • 总计变量
  • 摩根定理
//不好的代码
assert((!(bucket=FindBucket(key)))||!bucket->IsOccupied);

//好的代码
buket=FindBucket(key);
if(bucket!=NULL) asset(!bucket->IsOccupied());

重新组织

代码(重构)

待续

一次只做一件事

  • 列出代码所做的所有任务
  • 尽量拆分到不同的函数中,至少是代码的不同段落
var vote_changer=function(old_vote, new_vote){
   var score = get_score();

   if(new_vote !== old_vote){
     if(new_vote == 'Up'){
        score+=(old_vote == 'Down' ? 2:1);
     }else if{
        ......
     }     
   }
   set_score(score);
}

//拆分:1. old_vote和new_vote解析成数字值;2. 更新分数

var vote_value=function (vote){
    if(vote == 'Up'){
        return +1;
    }
    if(vote == 'Down'){
        return -1;
    }

var vote_change=function(old, new){
......
}

想法变成代码

  1. 自然语言描述
  2. 写代码
  3. 重构

你可能感兴趣的:(代码规范_1:代码的可读性)