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

zar*_*zar 8 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]; 
Run Code Online (Sandbox Code Playgroud)

或者,我们可以像下面一样将容器对象定义为单数,但它现在看起来像是代表一个对象而不是学生集合?它确实使用索引看起来更好.

    vector< string > student;
Run Code Online (Sandbox Code Playgroud)

我个人喜欢的另一个选择是这样的:

   vector< string > student_list;
Run Code Online (Sandbox Code Playgroud)

我将'_list'(或可能是骆驼符号)附加到集合变量名称(无论其向量或列表或映射如何).这样,对象的名称是单数的,但它将自身标识为对象的集合.

哪种更好的方式或惯例,以及更具可读性?应该绝对避免多个名字吗?

另外想想另一个更简单的例子,比如我们正在进行一项实验,我们以不同的间隔记录一天100次的温度,因此我们:

     float temperatures[100]; // or temperature[100]? or temperature_list[100]?
Run Code Online (Sandbox Code Playgroud)

或者甚至可能是不同的:

    float temperature_data[100]?
Run Code Online (Sandbox Code Playgroud)

cHa*_*Hao 8

复数很好——事实上,我会尽可能说预期——当名称指的是一组项目(即:集合、列表、向量、数组等)。temperature_data对于它们是指单个项目还是一组项目,诸如此类的名称可能不明确。 temperatures,另一方面,显然是指多个。

  • 愚蠢的挑剔:“温度数据”是“温度数据”的复数形式:P (13认同)
  • 如果有人真的再使用“数据”这个词,我会同意你的观点。:) 如今,“数据”是一个大众名词,并且被视为单数的频率至少与复数的频率相同。 (2认同)

Cat*_*lus 7

呃,为什么不好?最后,它其实并不重要,你会来这约定了,重要的是,它的统一使用,而不会产生负面影响可读性.

  • 但是,在同一范围内拥有`student`*和*`students`会产生可读性问题:) (2认同)

Mar*_*k B 5

如果事物/对象是复数,那么您应该用复数名称来命名它。

我认为这个students[0]例子一点也不令人困惑。我把它读作“学生零以下”,这基本上意味着给我学生索引零中的任何东西。如果我正确命名了事物,那么很明显该事物是学生(单数)。