C++ C/C++;:数组的命名约定?

C++ C/C++;:数组的命名约定?,c++,c,arrays,naming-conventions,C++,C,Arrays,Naming Conventions,阵列的良好命名约定是什么?我在一个有几千行代码的代码库上工作,并且数组没有一致的命名约定。很少有人在名字的末尾加上列表,比如*消息列表*,我真的不喜欢,因为它错误地暗示这是一个列表(链表),也很少有人在名字的末尾加上“s”,比如消息,这比以前的方法好,但有时会失败 我想知道数组类型变量是否有命名约定?根据它们所包含的内容命名它们。消息数组应称为消息。文件名数组应称为文件名。资本化以适应你的突发奇想和偏见 有人主张单数形式,认为message[i]是单数形式,比messages[i]更好。这是有道

阵列的良好命名约定是什么?我在一个有几千行代码的代码库上工作,并且数组没有一致的命名约定。很少有人在名字的末尾加上列表,比如*消息列表*,我真的不喜欢,因为它错误地暗示这是一个列表(链表),也很少有人在名字的末尾加上“s”,比如消息,这比以前的方法好,但有时会失败


我想知道数组类型变量是否有命名约定?

根据它们所包含的内容命名它们。消息数组应称为
消息
。文件名数组应称为
文件名
。资本化以适应你的突发奇想和偏见

有人主张单数形式,认为
message[i]
是单数形式,比
messages[i]
更好。这是有道理的,但相反的论点是变量名为聚合,所以复数形式更好


我不会在数组中使用后缀,例如
\u list

我们在以前的工作中使用的命名约定是变量以一些字母开头,以指示其范围(m表示成员变量,a表示参数等)。下划线后面是另外一两个字母,表示类型(_p表示指针,_dw表示整数(dword),_s表示字符串,等等),然后是变量名。你可以采用类似的方法,真正重要的是你的代码按照你的惯例是可读的,所以你可以用
a_VariableName
这样的东西来开始你的所有数组,因为它是一个数组,所以我会用数组包含的任何对象的复数。通常,在名称中指定变量的类型被认为是不好的做法,但如果您愿意,可以尝试使用,因此类似于
arrPrimeNumbers
的内容我很少直接使用“primitive”容器。相反,通常情况下,数组(或向量)是“实”类中的一个成员,该类是逻辑上标识某个逻辑聚合的“第一类公民”。因此,数组的名称是类的明显数据成员名称:

class MyCritters
{
private:
  std::vector<Critter> critter_set_;
  //...or...
  Critter[10] critter_set_;
};
class Mycriters
{
私人:
std::向量生物集;
//……或者。。。
生物[10]生物组;
};
这还有一个额外的优点,即我有“截取点”来执行逻辑集操作、确保非空、确保唯一性、添加特定类型的迭代算法等


然而,如果我只是直接使用数组,我通常会在name后面加上“set”。在我的系统中,我有数组、向量、链表等的通用接口函数,这些都是(有序的)集合。因此,“set”总是正确的,我可以简单地更改定义(实例化),所有其他访问器仍然正常工作。

我的投票支持复数“s”。不管怎么说,投票结束是主观的。只需为您的代码库选择一个,并与之保持一致。@Xeo:这个问题不是主观的。我不是问哪种命名惯例更好。我只是问,是否有任何命名约定,如果有,它们是什么?我会自己决定我更喜欢哪一个。命名惯例的核心是主观的。如果你不是问哪个更好,那么你只是要求列出所有命名约定,这是离题的。这个问题过于开放,很快就会演变成一场可怕的民调。只要你想编什么就编什么,坚持下去。老实说,这才是最重要的。术语“更好”意味着主观的,因为“在旁观者的眼中”对“更好”的定义。老实说,我太习惯了,以至于我发现没有它的代码有点难读。单词当然不是整数。不过,
int
是一个双字……在大多数编译器中,而不是在Windows世界中
DWORD
始终是一个无符号整数。是的,我现在回想起来,我们确实将它用于无符号整数,但我们也在PS3+1中完成了大部分编程:“资本化以适应您的突发奇想和偏见。”数学集没有重复;数组通常可以有重复项。我不会使用
\u set
作为后缀,除非数组被限制为一个没有重复项的数学集合。@Jonathan,有点同意,但“set”是一个标准化的接口,其中的实现可能是“向量”或“链表”。更改类型并重新编译,接口不会更改。按照我们的约定,
mycriters
是已知的
criter
实例的唯一集合,而我们通常也有
mycriterset
(作为
mycriters
中的数据成员),它不强制为唯一集合,可能包含NULL,并且实际上可以实现为
向量
链表
(作为实现细节)。匈牙利符号。