我们如何缩短长变量名?

How do we shorten long variable name?

通常我们会听到诸如使用描述性变量名称来传达意图的建议。如果我们避免缩写,描述性名称有时会变长。

然而,变量名在人眼中容易被消耗的地方应该有一个限制。例如,我在我的前公司看到类似的东西:

int thisIsASuperLongVariableNameHere 对比 int thisIsASuperLongVariableNameThere 对比 int[] thisIsASuperLongVariableNamesHere

如果我们只浏览那些变量名,它们看起来都非常相似,我们的大脑无法有效地捕捉差异。

所以我的问题是,人类可以有效使用的变量名的最大长度是多少?

如果变量名超过长度,缩短它们的标准方法是什么?

标准方法:

没有 "standard approach" 来缩短它们。

我在 Steve McConnel 的Code Complete(第 11 章)中找到了一些很好的指南。

如果您可以访问它,请看一看(无论如何,这是一本值得拥有的书)。不幸的是,我不认为我可以在没有版权问题的情况下引用他的整个列表。

编辑:我偶然发现一个 post on another site 引用了书中列出这些指南的整个部分。
我不确定这句话的合法性,所以我不在这里重复了。
然而,由于它对某人有帮助,而且我主要澄清 link 没问题*,我决定添加一个 link.
请注意,本书的其余章节包含更多关于命名的信息,尤其是短 names/prefixes。
本书的其余部分包含任何开发人员都应该知道的丰富信息,这些信息在出版 13 年后的今天仍然很重要。
所以我建议所有的读者都买下整个 book ,即使我 link 的报价满足了他们当前的需求,并且认为那句话只是它的开胃菜。


最大长度:

  • 尚未就"max length"达成共识;大多数人可能都认为最好不要夸大长度,但对于多大程度还没有达成共识(甚至没有太多讨论)。
  • Code Complete 对 1990 study 有一个很好的参考,其中发现当变量的名称平均为 10 到 16 个字符时,调试程序所需的工作量会最小化,而“名称平均为 8 个字符的程序到 20 个字符几乎同样容易调试。
  • 最近可能有更多的研究(直接关于编程或一般阅读),但我不知道有什么。
  • 最重要的是要运用你的理智,请记住,较长名称所传达的清晰度优势通常会超过其在阅读速度和潜在混淆方面的劣势(因此,如有疑问,最好倾向于冗长)
  • 你应该记住,在不同的情况下瞄准不同的长度是有意义的。
    例如,在 Clean Code 中,Bob 叔叔建议

    The length of a name should correspond to the size of its scope

    一般可以简化为:

    • 对于非常短的方法的局部变量,使用单字母名称也是合理的
    • 对于大多数其他内容,请使用描述性的、相当长的名称
    • 对于很少使用的内容,请考虑使用更冗长的内容。
  • (这通常适用于名称的决定)
    当您不确定某个名称时,请与您的同事讨论(甚至简短地)。
    这不能保证给你更好的名字,但其他人的认可会让你更有信心继续你的工作。
    请注意,这可能会让您倾向于(太)糟糕的名字,因为您很容易得到忙碌或冷漠同事的草率批准;他们的批准将保护你在未来免受投诉,但你可能仍然给新员工带来麻烦,甚至给你现在几乎不记得曾经写过的自己造成麻烦。

名字太相似:

关于您起的名字的例子,一般来说,如果可以的话,最好尽量避免使用如此相似的名字。
如果您的命名约定不禁止它,您通常可以使用一些简单的技巧来避免相似性:

thisIsASuperLongVariableName_Here
thisIsASuperLongVariableName_There
thisIsASuperLongVariableName_Here_Array