【问题标题】:How do we shorten long variable name?我们如何缩短长变量名?
【发布时间】:2017-11-02 16:27:57
【问题描述】:

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

但是应该有一个限制,变量名称可以很容易地在人眼中使用。例如,我在我的前公司看到了类似的情况:

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

如果我们只看一眼那些变量名,它们看起来都非常相似,我们的大脑无法有效地捕捉到不同之处。

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

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

【问题讨论】:

    标签: naming-conventions naming


    【解决方案1】:

    标准方法:

    没有缩短它们的“标准方法”。

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

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

    编辑:我偶然发现了一个post on another site,它引用了书中列出这些准则的整个部分。
    我不确定该引用的合法性如何,因此在此不再重复。
    但是,由于它可能对某人有所帮助,并且我主要澄清了链接到它是可以的*,我决定添加一个链接。
    请注意,本书章节的其余部分包含更多关于命名的信息,尤其是关于短名称/前缀的信息。
    本书的其余部分包含任何开发人员都应该知道的大量信息,这些信息在出版 13 年后的今天仍然很重要。
    因此,我建议所有读者购买整个book,即使我链接的报价满足了他们当前的需求,并且认为该报价只是它的开胃菜。


    最大长度:

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

      名称的长度应与其作用域的大小相对应

      一般可以简化为:

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

    名字太相似了:

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

    thisIsASuperLongVariableName_Here
    thisIsASuperLongVariableName_There
    thisIsASuperLongVariableName_Here_Array
    

    【讨论】:

    • 感谢@gbr 的详细解答和参考书目,我去看看。
    • @janetsmith 很高兴为您提供帮助
    • @janetsmith 我发现了一篇引用了整个指南的帖子,请查看“编辑:”。正如我所写的,尽管如此,阅读(购买)整本书对你还是有好处的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多