clean code: 童子军军规+命名

445 阅读2分钟

童子军军规:

让营地比你来时更干净

有意义的命名

1. 名副其实

// bad
const a // elapsed time in days
// good
const elapsedTimeInDays

2. 避免误导

避免使用与本意相悖的词:如果你的 AccountList 变量不是 List 类型的话,就不要这样命名

3. 做有意义的区分

如果只是为了满足编译器或解释器的需要而写代码,就会制造麻烦 例如:因为同一作用域下不能重名,就干脆随便改掉一个的名称

const klass // class
会出现在更正拼写错误后导致编译出错的情况
也不要使用废话做无意义的区分
// bad
const productInfo
const productData

// good
const product

废话代表冗余, variable 永远不应该出现在变量名中, table 永远不应该出现在表名中,NameString 这样的变量名永远不该出现,Name还能是浮点数吗?

使用读得出来的名称

你的变量名最好可以被发音 读出来

// bad
const genymdhms // 生成日期年月日
// 上面的变量名在沟通中无法被说出来

// good
const generationTimestamp;
// 可被发音

使用可搜索的名称

a, b, c 这样的名称在读代码时,难以被搜索定位,但是 MAX_CLASS_PER_STUDENT 就很容易 单字母名称仅用于短方法中的本地变量

不要在变量名中表示类型

例如匈牙利标记法: bBusy. b 代表 Boolean 类型

不要使用成员前缀

在维护中很快就会忽视前缀 m_des

不要使用缩写

类名

类名应该是名词不应当是动词

方法名

应当是动词或动词短语

别抖机灵

别使用不一定所有人都懂的梗

每个概念对应一个词

比如 get. fetch. request. 选一个词从一而终

别使用双关语 数组 add 元素,既可以代表 append 也可以代表 insert

大胆使用领域相关词汇

添加相关语境