有时候,当一个变量像一个数组或列表这样的对象集合时,将变量命名为复数很有诱惑力。这没关系,还是我们应该总是坚持变量的单数名称?作为一个例子,汽车的集合可以被称为“汽车”或“汽车”
考虑另一个例子:
vector< string > students; // it is named as students rather singular student
students.push_back("Mark");
students.push_back("Steve");
// lets say we are using index to retrieve it, it does look
// a little clumsy
string current_student = students[0];
或者我们可以像下面一样将容器对象定义为单数,但它现在看起来像是代表一个对象而不是学生集合?它确实使得使用索引看起来更好。
vector< string > student;
我个人喜欢的另一个选择是这样的:
vector< string > student_list;
我将'_list'(或可能是驼峰符号)附加到集合变量名称(无论其向量或列表或映射如何)。这样,对象的名称就是单数,但它将自己标识为对象的集合。
哪种方式或惯例更好,更具有上述可读性?是否应该绝对避免多个名字?
另外想想另一个更简单的例子,说我们正在进行一项实验,我们以不同的间隔记录一天的温度100次,所以我们:
float temperatures[100]; // or temperature[100]? or temperature_list[100]?
或者甚至可能不同:
float temperature_data[100]?
答案 0 :(得分:7)
呃,为什么不好?最后,你提出哪种惯例并不重要,重要的是它的使用是一致的,并且不会对可读性产生负面影响。
答案 1 :(得分:4)
如果thing / object是复数,那么你应该用复数名称命名。
我认为students[0]
示例根本不会令人困惑。我把它读作“学生 - 零度”,这基本上意味着让我得到学生索引零点。如果我把事情命名得当,那么事情应该是学生(单数)。
答案 2 :(得分:4)
复数很好 - 实际上,我会说期望 - 当名称引用一个项目集合时(即:集合,列表,向量,数组,等等)。像temperature_data
这样的名称可能含糊不清,无论它们是指单个项目还是一堆项目。另一方面,temperatures
明确提到不止一个。
答案 3 :(得分:0)
我认为复数没有问题 - 只要你避免在同一范围内使用单数和复数。只需使变量具有描述性。