GNAQ的变量命名规则分如下部分:

(函数名同样适用)

1.固定且有奇怪含义的变量(尽量不要理会)

at 邻接表存边时的表尾指针

ed (edge_struct) 邻接表结构体的名字

l (LCA_array) 含有LCA算法时用作记录LCA

pointer 巨长的变量名,但在写的时候很少访问它,这是邻接表里每个点的链尾的位置(更常用的貌似是next,推荐使用next,但要按照规则2缩写为nextx)

opt (operation_type) 用作操作次数变量或操作类型变量被读入

2.前(后)缀式与全缩式命名规则 和 常见单词缩写 和 缩写方法

前(后)缀式命名规则

以hsize,wpoint和tstamp为例

hsize=heap_size 堆大小

wpoint=white_point Prim算法的白点

tstamp=time_stamp 时间戳

前缀式命名规则的适用范围是某种结构或某种算法的信息变量

例如结构的大小、算法的步数、树的子节点个数。

前缀式命名规则基于英文的全拼(通常是两个或三个单词)缩写第一个单词而全写第二个单词,当且仅当第二个单词较短 , 且第一个单词( 表明变量的从属关系 )的缩写较好辨认 (比如叶子序号 线段树大小 距离

上面的例子均按照此规则缩写。

更多例子: **size **dis (distance太长而使用简写) **pos (position太长而使用简写)

而缩写第二个单词全写第一个单词,当且仅当第一个单词较短而第二个单词的缩写较好辨认。

比如edgenum nodenum nodev (v=value)  ctr* (ctr=counter 计数器)  cache** (表明是某某的缓存变量)

·

全缩式命名规则

若变量名都不符合前缀式命名规则,使用全缩式命名。

如ansf=answer_flow 既不符合前缀式缩写,(ans缩写为大多数人固定搭配,缩写为a则加深了理解难度),也当然不符合后缀式缩写(一个题外话:flow_ans是符合的,但是当时我不知道为啥脑子抽了就是写了个ans_flow)

那就全部缩写。缩写后意义较明显的单词只取首字母,而意义较不明显的单词取部分缩写。

·

缩写方法

  1. 原则是用最少的字母缩写,看到后在众多相似单词中能快速还原到正确的一个。
  2. 单词中发元音的字母尽量加入到缩写,而发辅音的较少添加
  3. 如果这样你还不知道怎么缩写,那就取前三个字母
  4. 缩写主要是给你看的,如果你扫了脑子一圈还没想到有别的常用意义可以如此缩写,那这个缩写就是好用的。你当然也可以使用其他易懂的缩写格式

比如:flow=fo/fl/fw

fo中o也发元音好像比较合适,但fo也可以是for的缩写或者former的缩写,容易产生混淆,尽量避免使用这种缩写(常用含义较多的)。

fl好像比较合适

fw可以是forward的缩写(且w在原词不发音,不应用这个单词缩写)

3.全拼式命名规则

如mapx,edgex,dis

如果变量名原本是一个单词,比较长而有缩写形式,使用缩写。没有就造一个。

如果较短(≤5个字符),使用全拼并在末尾+x

这样做的好处是防止卡关键字(试试prev!!你会被吓到的)

有时候使用缩写后也可以+x,也是为了防卡关键字

4.其他

尽量不要使用单个字母的变量,最佳范围2~5 (6)个字母之间

函数名可以使用下划线,变量名尽量不使用下划线,更好区分。

成员变量应该是一个名词或者偏正短语

函数应该是一个动词或者动宾短语

 

最重要的是有一套自己的常用变量缩写与变量名常用单词

当你写猪国杀 杀蚂蚁 立体图以及其他超过200行的程序,调试效率会非常高,因为在如此多的变量之下不会忘记每一个的含义,这才是最主要的。

这样当你打开屯了一个月的代码,你会用最快的时间进入状态,不需要纠结在变量名

当你请他人帮忙的时候,发代码他也能快速读懂

分类: 技术杂乱

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.