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)
复数很好——事实上,我会尽可能说预期——当名称指的是一组项目(即:集合、列表、向量、数组等)。temperature_data对于它们是指单个项目还是一组项目,诸如此类的名称可能不明确。 temperatures,另一方面,显然是指多个。
呃,为什么不好?最后,它其实并不重要,你会来这约定了,重要的是,它的统一使用,而不会产生负面影响可读性.
如果事物/对象是复数,那么您应该用复数名称来命名它。
我认为这个students[0]例子一点也不令人困惑。我把它读作“学生零以下”,这基本上意味着给我学生索引零中的任何东西。如果我正确命名了事物,那么很明显该事物是学生(单数)。