代码整洁之道 Table of Contents 1. 原则 1.1. 单一权责 1.1.1. 一个类应该完成一个类型的任务1.1.2. 內聚性要高,即每个函数使用类变量的多少 1.2. 开放封闭原则 1.2.1. 对内封闭对外开放 2. 军规 2.1. 只做好一件事2.2. 短小精悍2.3. 代码不要重复2.4. 开放封闭原则 3. 命名原则 3.1. 变量、函数、类名称不应该注释 –— 一目了当,做什么事,该怎么用3.2. 变量、类名词,函数动词3.3. 变量名称长短与作用域大小相关?3.4. 命名明确是王道3.5. 命名添加有意义的语境 (addrFirstName, 或者直接创建Address类) 4. 函数 4.1. 函数要短小,只做一件事4.2. 函数参数尽量少于三个,过多的参数应该进行封装,struct,class之类的结构4.3. 指令和询问 4.3.1. 指令简单理解为属性赋值和计算4.3.2. 询问表示要回答什么事,有返回值的函数 5. 注释 5.1. 注释是对意图的解释,但好的代码可以替代注释 6. 对象和数据结构 6.1. 过程式代码难以添加新的数据结构6.2. 面向对象代码难以添加新函数6.3. 得墨忒定律 6.3.1. 对象不应该了解对象内部的结构,即火车式调用obj.a().b().c() 1 原则 1.1 单一权责 1.1.1 一个类应该完成一个类型的任务 1.1.2 內聚性要高,即每个函数使用类变量的多少 1.2 开放封闭原则 1.2.1 对内封闭对外开放 2 军规 2.1 只做好一件事 2.2 短小精悍 2.3 代码不要重复 2.4 开放封闭原则 3 命名原则 3.1 变量、函数、类名称不应该注释 –— 一目了当,做什么事,该怎么用 3.2 变量、类名词,函数动词 3.3 变量名称长短与作用域大小相关? 3.4 命名明确是王道 3.5 命名添加有意义的语境 (addrFirstName, 或者直接创建Address类) 4 函数 4.1 函数要短小,只做一件事 4.2 函数参数尽量少于三个,过多的参数应该进行封装,struct,class之类的结构 4.3 指令和询问 4.3.1 指令简单理解为属性赋值和计算 4.3.2 询问表示要回答什么事,有返回值的函数 5 注释 5.1 注释是对意图的解释,但好的代码可以替代注释 6 对象和数据结构 6.1 过程式代码难以添加新的数据结构 6.2 面向对象代码难以添加新函数 6.3 得墨忒定律 6.3.1 对象不应该了解对象内部的结构,即火车式调用obj.a().b().c()