2011-10-05 132 views
5

有时,当一个变量为一个数组或列表的对象集合时,它很容易将变量命名为复数。这是好的,还是我们应该始终坚持变量的单数名称?作为一个例子汽车的集合可以称为“汽车”或“汽车”我们应该避免变量的复数名称吗?

考虑另一个例子:

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

回答

3

复数是罚款 - 事实上,我会去甚至说预计 - 当名称是指一个项目集合(即:集,列表,向量,数组等)。像temperature_data这样的名称可能会含糊不清,因为它们是指单个项目还是一群项目。另一方面,另一方面,temperatures明确指的是多于一个。

+4

愚蠢的挑剔:'温度_数据'是'temperature_datum'的复数:P –

+0

如果有人真的使用了“数据”这个词,我会同意你的意见。 :)这些日子里,“数据”是一个群体名词,至少和复数一样被认为是单数。 – cHao

+0

这是否也适用于命名空间名称?那么,包含几个策略类的命名空间应该命名为'policies'而不是'policy'? – AlwaysLearning

6

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

+2

但是,在同一范围内有'student' *和*'students'会引起可读性问题:) –

+0

@MatthieuM .:我不知道。 “学生=学生”肯定会很糟糕。但是,如果'学生'总是* a *学生,那么当您在“学生”循环时,它可能很容易成为代表“当前”学生的变量的适当名称。 – cHao

0

我看到没有复数的问题 - 只要你避免在同一范围内有单数和复数。只要让变量具有描述性。

3

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

我不认为students[0]的例子令人困惑。我把它看作是“学生 - 零度”,这基本上意味着让我在学生指数为零的任何地方。如果我已经正确地命名了它,那么显然这个东西是一个学生(单数)。

+0

目前,我在程序中有'粒子','离子','表面活性剂'的阵列,因为'表面活性剂'是指多种类型的表面活性剂,而不是同一类型的多种表面活性剂分子。我有点不舒服... –

相关问题