- 代码易于理解
- 可读性
表面层次
- 名字:装入信息
- 大小写,下划线
审美
- 代码看上去一致
- 列对齐
- 审美按块组织
- 代码分成段落
- 分格一致
// 代码组成段落
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){
......
}
想法变成代码
- 自然语言描述
- 写代码
- 重构