我尽可能在函数名中使用描述性语言。这有时会导致函数名过长,例如GetActionFromTypeName
或GetSelectedActionType
等二三十个字符的函数名。那么函数名何时变得太长难以管理(而不是编译器过长)?
我尽可能在函数名中使用描述性语言。这有时会导致函数名过长,例如GetActionFromTypeName
或GetSelectedActionType
等二三十个字符的函数名。那么函数名何时变得太长难以管理(而不是编译器过长)?
短而具有描述性的名称非常适合短而专业的函数......这非常适合代码重用。第3章:命名
C是一种简约语言,因此你的命名也应该如此。与Modula-2和Pascal程序员不同,C程序员不使用像ThisVariableIsATemporaryCounter这样可爱的名称。 C程序员会将该变量称为“tmp”,这样更容易书写,而且并不难理解。
当你在提到它们的名字时,开始使用缩写词时,我认为这就是太多了。当人们开始在名称中描述前/后/参数条件或给出实现提示时,我也觉得这太过分了。(例如getVersionInformationFormTheDatabase()
或doSomethingWithoutCheckingFooFirst()
)
在我看来,函数名应该恰好描述其目的所需的长度。如果您认为函数名太长,则可能表明它试图做太多事情,需要进行重构。
在我看来,函数的描述性更为重要。IDEs可以帮助我们避免拼写错误这样的麻烦。我认为有时使用缩写是可以接受的,只要它们在代码中保持一致即可(同一事物不使用不同的缩写,也不要将两个不同的事物使用相同的缩写)。
我认为你应该更加关注函数名是否太短或者不够描述。只要你的函数做到了它名字所描述的(包括所有描述),那么它就是一个良好的命名。我经常写一些长名称的函数,例如getPropertyNameArrayFromObject(虽然我倾向于使用下划线而不是驼峰式命名),它可以被称为getObjPropArr或其他什么,但是这样并不够描述性。我倾向于避免缩写,因为当你去处理其他事情并回到代码时,它们会变得模糊。
另一方面,考虑许多内置的PHP函数,如stricmp,其实应该被命名为caseInsensitiveStringComparison之类的东西。
还有一些情况,我故意编写非常短且没有描述性的函数名。有时我只是想要一个简短的JavaScript函数作为快捷方式。例如,我通常将$(id)别名为document.getElementById(id),因为我厌倦了打这个。
FindArticlesWithoutTitles
感到满意,但我可能会对FindArticlesWithoutTitlesThenApplyDefaultStyles
感到厌恶。这是错误的;要么名称过于技术化,不描述其实际功能(没有标题的文章通常需要修复样式,因此应该是FixArticleStyles
),要么它应该是两个函数:FindArticlesWithoutTitles/ApplyDefaultStyles
。FindArticlesWithoutTitles
,根据适当的上下文,我可能会将其缩短为FindNoTitles
,甚至只是FindArticles
,如果我没有其他文章查找函数。当名称中包含从上下文中明显的信息(例如incrementInteger(int x),long longID),无用的信息(例如ObsoleteIncrementer,RobertsCarFactory),难以理解的信息(例如TheFunctionThatRobertWorkedOnLastWeekButDidntFinish),数字信息(例如id1,id2,id3)或者包含代码异味时,应该进行修剪。请注意,即使上述名称的某些部分应该被修剪,您可能仍需要使用有用的信息来填充它们,以保持它们的唯一性并使它们易于理解,例如将id1命名为person_id,将id2命名为employer_id等。
函数的名称太长了,使用一个更短的名称可以省下一些工作。
通常情况下,我们选择描述性的函数名称是因为它可以帮助我们省下一些工作(通过使代码更易理解和维护)。因此,逻辑上来讲,你不应该给函数取一个过长的名字,否则会浪费额外的时间(例如,让代码变得更难阅读)。
public <A> A id(A a);
...你认为它会做什么?类型信息告诉你所有你需要知道的。除了副作用和异常,这个函数只可能做一件事情。
当然,你可能在使用允许无限制副作用的语言,所以这个函数可以写入文件。但如果它这样做了,那么它的类型就是一个谎言。在声明类型效果的语言中工作,可以使用非常简洁的名称,而不会失去任何描述性。