头图
引言
标识符命名,一个 OIer 每天都在做,却基本从未在意过的操作。
好的命名,既可以提高自己的调试效率,也可以提高代码可读性。
方便自己,也方便别人。
如果你觉得自己的代码不是很美观,又觉得码风已经定型,不如继续往下看,说不定可以让你的码风更进一步。
欢迎 @ 你身边有需要的朋友。
(注:本文仅为建议,具体还请结合自身习惯)
变量,常量及数组命名
一、选择长度适当的命名
如果命名太短,无法表示太多含义。因为缩写的重复率过高,导致变量或函数的具体含义很难区分。
如果命名太长,含义确实足够丰富,但会大大增加编码长度及调试难度,且不知道哪里会打错一部分。
一般选择 2 - 3 个字母的命名为宜。
以三个字母为例,可以选择一个英文单词的前三个字母,比如 col(color), num(number), ans(answer), tot(total) ……
还可以将一个长单词中的元音及重复字母删去,或者保留你喜欢的字母,比如 cnt(count), tmp(template), rmb(remember), knd(kind)……
二、尽量不要选择中文拼音
原因有几点:
- 中文中同音字过多,且前后鼻音,平翘舌音,对特殊地域 OIer 不太友好。(本人就不太能分清前后鼻音)
- 如果使用中文缩写,会出现许多歧义,例如 zdz 你能很快反应过来它是 最大值 的意思吗
- 同时,因为使用中文缩写的人很少,如果你这么写的话,其他人很难理解你的代码。
三、尽量减少无意义命名
例如 a, b, c, d 这样的命名,因为是按顺序延续,所以具体含义每个题都不一样,尽量不要使用,避免混淆。
不过,一些临时中转变量,因为本身就没有含义,那么这时候还是简单为好。
或者自己在稿纸上推算时便是如此写的,那么落实在代码上还是不要更改为好。
请记住,满篇 y, w, v, c, o 很让人崩溃(无论你是否知道它们都是什么含义)。
四、有一些表示固定含义的变量
有一些算法和数据结构中用到的特殊变量,你可以给他们分配一个不容易冲突,且含义明确的名字。
永远只有这一个变量可以起这样的名字。
比如分块中的块长,你可以给它命名为 block, 因为使用的次数很少,可以定长一些。
邻接表存图中的计数器,可以命名为 cnte, 显然其他地方很少会用到这样的名字。
同时,类似的,一些含义非常多的,给它加一个特殊后缀区分是一个好方法。
五、小 trick
- 善用 for 语句临时变量,不止可以有 i, j, k 这几种,枚举不同的量可以用 u, v, w, d 之类的首字母。
- 给数字常量起名字,如数据的最大值可以叫 Maxn, 0/1 之类的下标可以用 ls,rs 之类(可以了解 enum)。
- 不要使用多个相同字母,可以通过添加后缀区分,如 ans1, ans2, 而不是 ans, anss。
- 可以使用一些大写的单个字母,如 N, M, K, T, Q 等
函数命名
六、与数组名有关联
例如有一个数组名为 dis, 那么处理此数组的函数就可以叫 GetDis() 或 solveDis()。
七、使用不同后缀区分
有时候多个函数实现的是相似的功能,比如查询函数。
此时需要不同的后缀(也可以是前缀,后缀更常见)来区分。
例: query_ct(), query_pt(), query_nd() 分别是查询子树内信息,查询路径上信息,查询单点信息。
八、同上
和 变量,常量及数组命名 类似,函数命名也需要注意
- 长度,此时以 3 - 7 个字符为宜。
- 不适用中文拼音。
- 保持有意义命名。
等问题
其他
九、驼峰命名法
在一个命名中,根据意义常常会分为若干个部分, 如 get dis(), push up(), push down(), l mx, r mx 等等。
那么,为了提高区分度,以及增添美感,我们可以将每个部分的首字母大写,称为 大驼峰命名法,例如上面的名字,我们可以改为
GetDis(), PushUp(), PushDown(), LMx, RMx
如果整个单词的首字母不大写,则称为 小驼峰命名法。那么上面的名字,我们可以改为
getDis(), pushUp(), pushDown(), lMx, rMx
十、下划线分割命名法
与上面类似,只不过部分之间以下划线分割。
仍然是上面的例子
get_dis(), push_up(), push_down(), l_mx, r_mx
可以同时使用不同的命名法,以增加命名美感及区分度。
具体采用哪种可以根据个人习惯。
结语
实际上,无论使用哪种命名,最重要的是代码逻辑。
名字只是锦上添花,切不可本末倒置,过分追求命名。
祝大家都能拥有人见人懂的码风,感谢。
如对文章有任何问题请私信作者 @qkhm .
标签:变量,字母,后缀,可以,算法,命名,几点,标识符,含义 From: https://www.cnblogs.com/qkhm/p/17755178.html