Skip to main content

2.有意义的命名

名副其实!

避免魔术数

避免误导

即便容器就是一个List,最好也别在名称中写出容器类型名。

做有意义的区分:

ProductInfo, ProductData意义上很难区分。

使用读的出来的名称。

用实际的英语单词而非自己创造一个奇怪的单词。

使用可搜索的名称

名称长短应与其作用域大小相对应。

i, j, k在循环中可以使用。但在其他情况下就显得无意义。

避免编码

不需要使用编码例如匈牙利命名法。

private string m_dsc;

接口和实现:

接口不要加前缀,非要加的话在实现加。

避免思维映射:

写的代码不应该让读者在脑中把你的名称翻译为他们熟知的名称

类名

名次

方法名

动词

别抖机灵

就是别玩梗,说人话。

每个概念对应一个词

表达相似概念的时候选择一个词。例如fetch, retrieve, get中选一个并且保持前后一致。

别用双关语

和上一条很像,就是别把一个词用作不同的概念。比如新建一个新用户用了add,那将用户加入列表就需要还一个词比如insert。

使用解决方案领域名称

就用术语,大家都是程序员!

使用源自所涉问题领域的名称

这个没例子?

添加有意义的语境

将name, street, city, state放在一起的时候state的意思很明显,但单独说state就很混乱。所以可以添加语境,修改为为addr_name等。

但更推荐直接新建一个Address类。

小结

多花时间思考起名字,后面觉得前面的名字不合适就及时改。