**疑问:**那个代码最好
第一章节
1.可读性原则
代码的写法使得别人理解它所需的时间最少。
2.表面层次改进
好的名字、注释、代码整洁格式(使用适当的空格符)
第二章:把信息封装到名字里
1.选择专业的词
GetPage---->DownloadPage
----->FetchPage
二叉树的size–>[Height, NumNodes, MemoryBytes]
2.避免使用泛泛的词
(1)不好的例子
tmp、retval(returnValue)、foo
(2)修改例子
javaSpcript例子
retrval—>sum_squares
(3)tmp使用场景
tmp = left// 临时场景使用
修改建议
tmp–>修改为具体场景的意义tmp---->user_info
tmp---->tmp_file # 加一个后缀
3.循环迭代器
(1) 表示迭代器的词不要表示其他含义
i,j, k, iter, it
(2)根据场景变为更加精确的名字
i, j, k----->clud_i, members_i //增加前缀
4.用具体的名字代替抽象的名字
(1)例子1
ServerCanStart----->CanListenOnPort
(2)例子2
#define DISALLOW_EVIL_CONSTRUCTORS(ClassName)
ClassName(const ClassName &);
void operator=(const ClassName&);
class ClassName {
private:
DISALLOW_EVIL_CONSTRUCTORS(ClassName)
};
DISALLOW_EVIL_CONSTRUCTORS------>DISALLOW_COPY_AND_ASSIGN //EVIL这个词太抽象
(3)例子3
—run_locally
当作为可选打印日志意义时:–extra_logging
当—run_locally还有其他意义时:分两种写法–extra_logging、–use_local_database
5.为名字附带更多信息
变量--------》等价于一个小注释
(1)例子1,包含16进制
string id; ----->hex_id
(2)单位
start---->start_ms
(3)url—>untrustedUrl\trustedUrl
原则:需要理解的关键信息,放在名字里面,不提倡每个变量都加
6.名字应该有多长
原则:
在小的作用域里面用短名字
输入长名字,可以利用软件的补全功能
首字母缩写原则:团队其他人员均理解
丢掉没用的词:ConvertToString----->toString
利用名字的格式来传递含义----符合编程规范