【问题标题】:Do you name your arrays using plural or singular in PHP? [closed]你在 PHP 中使用复数还是单数来命名你的数组? [关闭]
【发布时间】:2010-09-28 14:04:37
【问题描述】:

当我命名数组类型的变量时,我经常会遇到一个难题: 我是用复数还是单数命名我的数组?

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

但是,假设我想在这个数组中引用一个名称。对于 Bobby,我会说:$names[1]。然而,这有悖常理。我宁愿叫 Bobby $name[1],因为 Bobby 只是一个名字。

因此,您可以看到细微的差异。数组命名有约定吗?

【问题讨论】:

  • 当您调用 $names[1] 时,您会认为该变量包含许多名称,并且您正在引用该数组的一个实例。当您想到一个名为 $name 的变量时,您会认为它只包含一个名称。
  • 对于多维名称数组,我们会使用$namess[1]吗?
  • 这么多意见不考虑如果数组只有一个元素怎么办?那么复数有意义吗?没有。你在任何地方都输入强制转换“array”这一事实足以让人们知道它是一个数组,包含零、一个或多个值。复数论点正在接近可怕的匈牙利符号。如果您更好地命名变量,则不需要复数,并且 foreach 很好。 array $clientName - $clientName[0]$clientName[1] 等等听起来不错,foreach ($clientName as $name) 也不错。英文“For each client name”。没有复数!!

标签: php arrays naming-conventions


【解决方案1】:

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

$name = $names[1];

【讨论】:

  • 是的,总是复数,或者在名称中提到它的集合/列表
  • 总是复数。绝对永远。其他一切都极具误导性。
  • $sheep = $sheep[1];哦!
  • 我完全同意作者的观点。但这意味着我们,程序员是不一致的。因为我们总是打算使用标准。我们将集合称为复数 $names 但是在 SO 中讨论过最好以单数形式命名 DB 中的表,例如 table student。如何理解我们?
  • "$name = $names[1]" 当您访问名称 2 时会发生什么? $name2 = $names[2]??另外,当你已经有一个(数组)时,为什么还要设置一个新变量?只需使用您已经创建的数组吗? Your 2nd user is called $name[1]。 "$names[1]" 返回一个名字,所以复数不会让人混淆吗?听起来“$names[1]”是一组名称本身而不是一个名称
【解决方案2】:

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

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

【讨论】:

  • 名称不应传达任何关于类型、可见性、继承等的信息。
  • 不要将“关于类型的信息”与匈牙利符号的概念混为一谈。他不是在这里说的。
  • @НЛО 抽象除外,这有时很有用。
【解决方案3】:

我通常会在最后给它一些东西,比如 list 所以它会是

nameList

否则,我将其设为复数。

【讨论】:

  • 如果nameList 表示名称列表,名称应该是复数形式,如namesList,不是吗?
  • 我注意到nameList 在英语中很常见
  • @Kwadz 我发现nameList 更常见。一个人会说tool bag而不是tools bag
【解决方案4】:

复数。

sort(name)
sort(names)

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

然后,这里:

name[1]
names[1]

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

因此,当引用整个集合引用集合中的一项时,复数是唯一有意义的。

【讨论】:

  • 带有foreach names as name 的语言呢? foreach name as currentName 会不会更合适? sort(nameList) 也更有意义。
【解决方案5】:

我会一直选择

appleList 
appleArray
nameAppleDict

通过正确完成命名约定,可以为其他人节省大量时间来阅读代码。因为他们不必回头检查变量类型来理解它。

有一个像这样的变量名:

apples 

有时可能会令人困惑(列表、数组或集合?)

【讨论】:

  • 这更有意义。它可以帮助任何阅读代码的人快速理解变量是什么类型,甚至当你在很长一段时间后回来阅读你的代码时也是如此。
  • 这被称为“匈牙利符号”,由于多种原因被认为是不好的做法。
【解决方案6】:

对我来说是复数。

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

虽然复数命名在某些情况下会导致一些异常,但大多数情况是它提供了更清晰的代码和更易于扫描阅读的代码,而不会在您返回时产生烦人的感觉让你的大脑从任何绊倒的事情中解脱出来。

【讨论】:

    【解决方案7】:

    虽然在学校教你做单数所以你可以说:

    value[0] = 42;
    

    如果你仔细想想,这确实比:

    values[0] = 42
    

    如果你不相信我,就大声说出来。无论如何,我确实使用复数,以便我可以轻松分辨何时扫描代码。这似乎也是人们现在使用的标准。

    【讨论】:

    • 这是搭便车的参考吗?哈哈+1
    【解决方案8】:

    其他人怎么说:复数。

    在 PHP 中就更加明目张胆了:

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

    将显示 o。 :-)

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

    【讨论】:

      【解决方案9】:

      总是复数。对于可以包含多个元素的任何其他数据类型的列表也是如此。

      【讨论】:

      • 喜欢包含字符的字符串?
      【解决方案10】:

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

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

      【讨论】:

      • 我倾向于使用 $peoples 或 $childrens。即使它不是正确的英语,你也可以看到它的意思。这样,我使用的约定是复数是带有“s”的单数。虽然我仍然不确定我的约定是最好的。
      • @Riman。 $childrens 是双复数(children 也是如此,在词源上,-er-en 都是复数后缀,而 childer 在英格兰北部的某些地区仍然可以听到)。一个人就是一群人。
      • 这就是为什么我总是使用$peopleses$childrenses,只是为了确定。
      【解决方案11】:

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

      【讨论】:

        【解决方案12】:

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

        这就是为什么现在在所有语言中,我用名词单数后跟诸如 personArray 或 person_arr 等类型(如果您愿意的话)的原因。如果相关,我通常还会在开头包含范围。变量名称应该足够明确,您不需要自动完成或 ctrl+f 即可知道它是什么。

        【讨论】:

          猜你喜欢
          • 2010-09-16
          • 1970-01-01
          • 1970-01-01
          • 2011-03-22
          • 1970-01-01
          • 1970-01-01
          • 2018-07-07
          • 2012-10-24
          相关资源
          最近更新 更多