命名习惯
写程序经常需要命名,好的名字至少可以带来更清晰的代码,进一点还可以带来更好的设计和架构。
但看过很多程序,发现很多命名都不是很合适。
下面是我总结的一些命名原则:
1. 提取公共部分, 减少不必要的重复(no repeate)。
一堆函数名如果有相同的部分,可以使用 namespace 来封装,如果它们逻辑还有耦合,可以放到一个类中。一堆文件名如果有相同部分,建议把相同部分提取为文件夹名,这样文件名可以简短直接。
2. 把最重要的信息放到 名字的前面 ( first is importance)
比如 create_singer_allalbums.cpp
create 是最没用的信息,但这个目录下很多都有,可以把 create提取成一个目录。albums是最重要的信息,应该放到最前。all_alblums_of_singer, 如果去除all不会引起文件冲突,改成 albums_of_singer.cpp 更简洁。
下面是对第二原则的推广
3. 不要使用匈牙利命名法 ( badly type prefix)
匈牙利命名法,是用来弥补早期编译器没有函数原型检查的缺陷。 现在的编译对类型不匹配都会给出错误或警告,你只要关注makefile的提示信息就可以了。高级的IDE都支持类型信息提示, EditPlus和notepad++这些除外。
如果非要使用 匈牙利命名法,也建议你把前缀改成后缀形式, 比如 vecSongs 改成 songs_vec, 这样读代码的人受到的干扰少很多。
4. 不要使用前缀,使用后缀(badly scope prefix)
还有很多喜欢命名 类变量为 m_songs, 或 _songs, 这里 m_ 前缀表示 member_var是类的实例变量。
但每次读到这个的都不爽,如果改成 songs_ 这样的方式, 我就可以关心 songs , 判断是否是实例变量的时候,再去看后缀。
_songs 这种 方式不好地方在于, _ 和 _ _ 前缀被好多系统变量占用了。
g_songs 的方式定义全局变量是合适的,因为全局变量是丑陋的,让这个丑陋的设计更显眼,也更有利于后期改进(类似于 const_cast, static_cast)