【问题标题】:Should we avoid plural names for variables? [closed]我们应该避免变量的复数名称吗? [关闭]
【发布时间】:2011-10-05 15:36:33
【问题描述】:

当变量是数组或列表等对象的集合时,有时将其命名为复数是很诱人的。这可以吗,还是我们应该始终坚持变量的单数名称?例如,可以将一组汽车称为“汽车”或“汽车”

考虑另一个例子:

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

【问题讨论】:

    标签: c++ stl naming-conventions


    【解决方案1】:

    复数很好 - 事实上,我会说 expected - 当名称指的是项目的集合(即:集合、列表、向量、数组、 ETC)。像temperature_data 这样的名称可能会在它们是指单个项目还是一组项目方面产生歧义。另一方面,temperatures 显然指的不止一个。

    【讨论】:

    • 愚蠢的挑剔:temperature_datatemperature_datum 的复数形式:P​​
    • 如果有人真的再使用“基准”这个词,我会同意你的看法。 :) 如今,“数据”是一个大众名词,至少和复数一样经常被认为是单数。
    • 这也适用于命名空间名称吗?那么,一个包含多个策略类的命名空间应该命名为policies,而不是policy
    • 命名空间名称,我认为,只要你保持一致,无论哪种方式都可以。
    【解决方案2】:

    呃,怎么会不行呢?最后,你会想出哪种约定并不重要,重要的是它的使用始终如一,并且不会对可读性产生负面影响。

    【讨论】:

    • 但是,在同一范围内拥有student students 会带来可读性问题:)
    • @MatthieuM.:我不知道。拥有students = student; 肯定很糟糕。但是,如果student 始终是a 学生,那么当您循环通过students 时,它很容易成为代表“当前”学生的变量的合适名称。
    【解决方案3】:

    如果事物/对象是复数,那么你应该用复数命名。

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

    【讨论】:

    • 目前,我在程序中有数组particlesionssurfactant,因为surfactants 将指代多种类型的表面活性剂,而不是相同类型的多种表面活性剂分子。我有点不舒服……
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 2010-11-21
      • 1970-01-01
      相关资源
      最近更新 更多