函数名字太长的标准是什么?

52

我尽可能在函数名中使用描述性语言。这有时会导致函数名过长,例如GetActionFromTypeNameGetSelectedActionType等二三十个字符的函数名。那么函数名何时变得太长难以管理(而不是编译器过长)?


22
当你使用没有代码自动补全功能的编辑器时,函数名会变得太长。 - schnaader
2
当我使用vim时,我的函数名称的长度相同。 - C. Ross
1
好的,vim用户也倾向于能够写得很快。总的来说,程序员往往具有更好的打字技能...但是使用代码自动完成仍然更好。 - schnaader
4
这个问题的意义是什么?当程序员觉得函数名称太长时,函数名就太长了。我们无法告诉你,作为编写代码的程序员,是否觉得名称太长。 - jalf
6
@jalf,问一些“有趣”的问题没关系,对吧?这是其中之一,此外和其他人一起思考它也很有好处。 - C. Ross
显示剩余4条评论
27个回答

90
如果有一个更短但仍能描述功能的名称,那么函数名就太长了。

17
具体来说,如果存在一个单词可以被省略而不会引入歧义,那么这个名称就太长了。 - ilya n.
2
缩短长函数名称中的单词,例如使用GetActFromTypeName代替GetActionFromTypeName被微软视为一种不良实践。 - Siyon DP

44

当你读到一半就无法再继续朗读而需要停顿呼吸时 =D


34

当函数名开始过度描述其功能,或者阻碍代码的可读性时,它的名称就过长了。


1
说得好。保持名称清晰简洁,但仍具有描述性。 - Mark

31
  1. 如果你需要向右滚动才能阅读它。
  2. 描述了三个或更多的事情 - 它不应该做那么多事情。
  3. 你的老板认为它太长了。
  4. 它比代码本身还要长。
  5. 它以 Get 开头,就像其他 500 个函数一样。
  6. 没有人想使用它。
  7. 有另一个功能完成相同的事情,而且它的名称更短,用户可以理解。
  8. 它可以被缩短。

21

当它没有做到它所说的一切事情时。;)


是的;史蒂夫·麦康奈尔在《代码大全》(至少第一版)也有同意这个观点。 - iokevins

18

当函数名变得太长而难以阅读和理解时,函数名太长了。另一方面,函数名的可读性取决于命名约定,有时长名称易于阅读。


34
我相信我在 PHP 标准库中看到过上述两个函数。 - Cam Jackson

7
当你开始思考它 :)

2
我本来想说的是当你不得不移动眼睛时,但这基本上是一样的。 - job
大量阅读几乎是对单词形状的即时识别,远在有时间有意识地注册和思考它们之前。短语也可以以同样的方式被接受,但长序列必须被有意识地分解成它们的“部分”才能被理解。也就是说,按顺序阅读。这个过程对不同的人可能是不同的,但往往会遵循适应一种语言时学到的习惯。对于函数名称,如果学习了特定的构造方法,那么阅读它的能力将会更加熟练,但仍然会受到母语的限制。 - Patanjali

7
如果函数名字“太长”,那么很可能这个函数本身也过于冗长,承担了太多责任。许多聪明的程序员都认为一个函数应该只做一件事情。如果一个函数的名字要很长才能准确描述它所做的事情,那么将其重构为更短、更简单的私有函数组合的可能性很高,这些函数自然会有较短的名字。(参见此处)

7

来自《代码大全》(第一版,第188页)

“Gorla、Benander和Benander发现,当变量的名称平均为10到16个字符时,调试COBOL程序所需的工作量最小(1990年)。名称平均为8到20个字符的程序几乎同样容易进行调试。”

这是我见过的唯一一个关于变量名称长度合理指南的经验性讨论。其他一切都取决于个人意见和舒适度。


我不认为这个经验性的讨论是直接适用的,因为它没有涉及到函数名,只有变量名。 - mtnpaul
同意,变量名与函数名的使用完全不同。 - TheThing

6

只要方法名具有描述性,我认为方法名长度不会太长。如果方法名超过40个字符,我会尝试用更少的词语表达相同的含义。如果无法做到,为了清晰明了,我会保留长名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接