第一章、整洁代码
ØWhy:为什么要写整洁代码?ØWhat:什么是整洁代码?ØHow:怎么写出整洁代码?
第二章、有意义的命名
ØWhat:什么是有意义的命名?ØHow:怎样避免无意义的命名?
Why:为什么要写整洁代码?
Ø花时间保持代码整洁,不仅有关效率,还有关生存。Ø混乱(不整洁)无助于赶上期限。Ø破窗理论。
What:什么是整洁代码?
Ø逻辑直截了当,让缺陷难以隐藏Ø分层机制完善错误处理代码Ø性能调优Ø一次只做好一件事Ø能通过测试Ø没有重复代码Ø几乎没有改进的余地
How:怎么写出整洁代码?
Ø军规:让营地比你来时更干净。Ø从现在开始行动:Later equals never.Ø第一步,从命名开始
干啥都得先起个名字
Ø变量
Ø函数
Ø参数
Ø类Ø目录/文件
有意义的命名--名副其实
Ø是什么就叫什么,比如指明计量单位和计量对象
$d;//消逝的时间,以日计
$elapsed_time_in_days;
有意义的命名--避免误导
Ø避免使用专有名词作变量名称,除非指的就是那个专有名词
$hp,$aix,$sco
Ø避免在变量名称中使用容器类型名
$account_list
$account_group
Ø避免使用外形相近的词
xyz_controller_for_efficient_handling_of_strings VS xyz_controller_for_efficient_storage_of_strings
Ø避免使用小写字母l和大写字母O作为变量名称
有意义的命名--做有意义的区分
Ø反面教材1:以数字系列命名
$a1,$a2,$a3...,$aN
Ø反面教材2:名称虽不同,意思无差别
$product
$product_info
$product_data
Ø反面教材3:废话(=冗余)
$user_name_variable
$user_name_string
UserObject
有意义的命名--使用读得出来的名称
public function genymdhms(){
...
}
public function generation_timestamp(){
...
}
有意义的命名--使用可搜索的名称
Ø反面教材1:数字
5 VS WORK_DAYS_PER_WEEK
Ø反面教材2:单字母名称
i,j,k(仅适用于短方法中的局部变量,如循环计数)
有意义的命名--避免使用编码
Ø避免把类型、作用域编进名称里面
Ø避免使用前缀或者后缀
Ø接口或者抽象类不需要在名称中特地说明
有意义的命名--避免思维映射
Ø明确是王道,不要让读者翻译
有意义的命名--类名和对象名
Ø名词或名词短语
有意义的命名--方法名
Ø动词或动词短语
有意义的命名--别扮可爱
Ø避免使用俚语或者俗语
有意义的命名--每个概念对应一个词
Øcontroller、manager、driver
有意义的命名--别用双关语
Ø避免同一个词用于不同目的
add
有意义的命名--使用解决方案领域名称
Ø使用技术术语
JobQueue
有意义的命名--添加有意义的语境&不要添加没用的语境
first_name,last_name,street,city VS addr_first_name,addr_last_name,addr_street,addr_city
CustomerAddress VS Address