您在PHP中使用复数还是单数来命名数组?[关闭]


69

在为数组类型变量命名时,经常会遇到一个难题:我是使用复数形式还是单数形式命名数组?

例如,假设我有一个名称数组:在PHP中,我会说: $names=array("Alice","Bobby","Charles");

但是,可以说我想在此数组中引用一个名称。对于Bobby,我会说:$names[1]。但是,这接缝违反直觉。我宁愿叫Bobby $name[1],因为Bobby只是一个名字。

因此,您会看到一点差异。有命名数组的约定吗?


7
调用$ names [1]时,您会认为该变量包含许多名称,并且您正在引用该数组的一个实例。当您想到一个名为$ name的变量时,您会认为它只包含一个名称。
奥拉维尔Waage

5
对于名称的多维数组,我们将使用$namess[1]吗?
xikkub 2013年

Answers:


82

我使用复数形式。然后我可以做类似的事情:

$name = $names[1];

1
yup总是复数,或者提及它的名称/集合/列表
Ari Ronen

2
总是复数。绝对总是。其他所有内容都极具误导性。
Thorsten79

41
$ sheep = $ sheep [1]; h!
FryGuy

2
我完全同意作者的看法。但这意味着我们,程序员是不一致的。因为我们一直打算使用标准。我们将集合称为复数$ name,但是在SO上进行了讨论,最好以单数形式命名DB中的表,例如table student。如何理解我们?

19

如果读者不熟悉类型声明,名称应始终传达尽可能多的信息。因此,数组或集合应以复数形式命名。

我个人认为$ name [1]具有误导性,因为它的意思是“名称的第一个元素”,没有英语意义。


5
名称永远不能传达有关类型,可见性,继承等的任何信息。
НЛО13年

1
不要将“关于类型的信息”与匈牙利表示法的概念混为一谈。那不是他在这里说的话。
Sinaesthetic,

15

我通常会在最后给它一些东西,例如列表,这样

nameList

否则,我将其复数。


如果nameList是指名字列表,名字应该是复数形式namesList,不是吗?
夸德兹

1
我注意到nameList英语很常见
Artur Beljajev '17

@Kwadz我发现这nameList更常见。一个人会说atool bag而不是a tools bag
埃文·莫兰

15

复数。

sort(name)
sort(names)

显然,在这里只有复数才有意义。

然后,在这里:

name[1]
names[1]

在这种情况下,两者都有意义。

因此,复数是在引用整个集合时以及从集合中引用一项时唯一有意义的词。


那用什么语言foreach names as name呢?会不会foreach name as currentName更适合?也sort(nameList)更有意义。
2013年

14

我总是会去

appleList 
appleArray
nameAppleDict

通过正确执行命名约定,将为其他人节省大量时间来阅读代码。由于他们不必返回并检查变量类型以了解它。

具有如下变量名:

apples 

有时可能会造成混淆(列表,数组或集合?)


1
这更有意义。它可以帮助任何阅读代码的人快速了解变量的类型,甚至是您长时间阅读代码后回来的自己。
Andres Ramos

1
这被称为“匈牙利符号”,出于多种原因被认为是不良做法。
holmberd

2

对我来说复数。

由于上述所有原因,并且因为我工作的约定(我为创建所做的约定)要求数组/列表/向量等采用复数形式。

尽管复数命名在某些情况下可能会导致某些异常,但大多数情况是它提供了增强的清晰度和代码,使代码更易于阅读,而又不会让您烦恼的心情陷入奇怪的结构并中断流程,而您又无法回头了。大脑从任何绊倒它。


1

其他人说的:复数。

在PHP中甚至更加公然:

$name = 'Bobby';
echo $name[1];

将显示o。:-)

我必须承认,几年前我问过自己同样的问题,但是在访问一个成员时,显示数组或集合的复数性质比英语含义更重要...



0

复数,尽管教您在学校中单做,所以您可以说:

value[0] = 42;

实际上,如果您考虑一下,那确实比:

values[0] = 42

如果您不相信我,请大声说出来。无论如何,我都会使用复数形式,这样我就可以轻松分辨出何时扫描代码。这似乎也是人们最近使用的标准。


那是旅行者的参考吗?哈哈+1
亚历克斯

0

总是复数。这样我做的时候就不会有任何困惑...

for each (string person in people)
{
    //code
}

我倾向于使用$ peoples或$ childrens。即使英语不正确,您也可以看到它的含义。这样,我使用的约定是复数是单数形式,并附加了“ s”。尽管我仍然不确定我的惯例是最好的。
Rimian

@Riman。$childrens是一个双复数(在词源上,children也是如此,因为-er-en都是复数后缀,在英格兰北部的某些地区仍然可以听到childer)。一个民族就是一群人。
TRiG 2012年

4
这就是为什么我总是使用$peoplesesand $childrenses,只是为了确定。
kraxor 2013年

0

我通常使用复数形式,有时使用与此处引用相同的方式,将List添加到名称中...


0

我使用许多不同的语言,没有考虑的一件事是具有比数组更多的语言。即人:人;人:字典。people不一定是数组,它可能是另一种类型并导致错误。同样,在某些语言中,不同类型将在不同操作下表现更好,或者可能具有不同的可用方法。

这就是为什么现在在所有语言中我都使用名词单数形式命名,然后根据需要使用诸如personArray或person_arr之类的类型。如果相关的话,我通常也会在开始时就进行范围界定。变量名应该足够明确,以至于不需要自动完成或ctrl + f即可知道它是什么。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.