我尽可能在函数名中使用描述性语言。这有时会导致函数名过长,例如GetActionFromTypeName
或GetSelectedActionType
等二三十个字符的函数名。那么函数名何时变得太长难以管理(而不是编译器过长)?
我尽可能在函数名中使用描述性语言。这有时会导致函数名过长,例如GetActionFromTypeName
或GetSelectedActionType
等二三十个字符的函数名。那么函数名何时变得太长难以管理(而不是编译器过长)?
当开发人员忘记参数的描述性质时(假设有意义的参数和变量名称),函数和方法名称开始变得过长。例如:
my $template = HTML::Template->new( filename => 'home.html');
$template->param( title => 'Home Page' );
$html = $template->output;
即使您不了解 Perl,也从不听说过 HTML::Template,它的工作方式是透明的。
我太经常看到一些人诱惑性地将那个output
方法命名为像RenderHTMLViewFromTemplateObject
这样的东西。 如果所有使用的库都有这种命名约定,那么我就无法简单地跟随这发生了什么。
我认为这对于公共名称尤其重要 - 它们不应过长,但太长是非常主观的。总是有一个更长和描述性的名称比太短的名称更好。
对于私有方法,即使非常长的名称,在我看来也不是问题。
尽力避免主观性:
当名称长度接近你典型行长的1/3时,就已经有些过长了。当名称占据一半甚至更多时,就太长了。如果变量名占据整行,每行只能写一条语句是相当麻烦的。
此外,大多数IDE都支持自动补全(从而使程序员无需完整地手动输入变量名),所以我认为更重要的是尽早使变量名尽可能唯一。
如果编译器对变量名有一些限制,通常是64个或128个字符之间。过去,32个字符也很流行。如果它们有限制,它们通常只使用前n个字符并忽略其余部分。
一般规则是函数名提供了一个非常简短的描述,说明它在做什么。这样的描述大多数都应该容易地适应于32个字符以内。(使用驼峰命名法来分隔单词)。由于现在大多数的IDE都提供了代码自动完成功能,所以使用错误的函数名称确实很少见。但是,请确保大多数函数名称的前8个字符不同,以使自己更容易。例如,避免像DateCalculationAddMonth、DateCalculationAddWeek、DateCalculationAddYear和DateCalculationAddDay这样的函数名称。请使用AddMonthDateCalculation、AddWeekDateCalculation、AddYearDateCalculation和AddDayDateCalculation。(顺便说一下,这些只是愚蠢的例子,但我希望您能理解我的意思。)
实际上,将您的函数添加到单独的类中可能会更好。以上面愚蠢的例子为例,您可以创建一个名为DateCalculation的类,并向该类添加四个(静态/类)函数(AddMonth、AddWeek、AddYear和AddDay)。基本上,当您有许多类似的函数需要分组在一起时,这种方法会更加有用,否则它们的名称会非常冗长。