我们应该避免变量的复数名称吗?

时间:2011-10-05 15:36:34

标签: c++ stl naming-conventions

有时候,当一个变量像一个数组或列表这样的对象集合时,将变量命名为复数很有诱惑力。这没关系,还是我们应该总是坚持变量的单数名称?作为一个例子,汽车的集合可以被称为“汽车”或“汽车”

考虑另一个例子:

    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]?

4 个答案:

答案 0 :(得分:7)

呃,为什么不好?最后,你提出哪种惯例并不重要,重要的是它的使用是一致的,并且不会对可读性产生负面影响。

答案 1 :(得分:4)

如果thing / object是复数,那么你应该用复数名称命名。

我认为students[0]示例根本不会令人困惑。我把它读作“学生 - 零度”,这基本上意味着让我得到学生索引零点。如果我把事情命名得当,那么事情应该是学生(单数)。

答案 2 :(得分:4)

复数很好 - 实际上,我会说期望 - 当名称引用一个项目集合时(即:集合,列表,向量,数组,等等)。像temperature_data这样的名称可能含糊不清,无论它们是指单个项目还是一堆项目。另一方面,temperatures明确提到不止一个。

答案 3 :(得分:0)

我认为复数没有问题 - 只要你避免在同一范围内使用单数和复数。只需使变量具有描述性。