命名功能困难

时间:2010-06-26 23:31:48

标签: function naming

  

可能重复:
  Anyone else find naming classes and methods one of the most difficult part in programming?

有时我似乎无法找到我正在编写的函数的任何名称,这可能是因为函数不够内聚吗?

如果想到一个功能的好名字,你会怎么做?

8 个答案:

答案 0 :(得分:15)

对于命名功能,请避免使用简单的名词,而是在动词之后命名。一些指示:

  1. 具有独特的功能名称,例如没有validateInput()validateUserInput(),因为很难说一个人对另一个人做了什么。另外,避免使用看起来非常相似的字符,例如数字1和小写'l'。有时它会产生影响。
  2. 您是否正在开展多人项目?您应该花一些时间来讨论命名约定,例如,如果函数名称应该有下划线,应该是camelCase等。
  3. 匈牙利符号是一个坏主意;避免这样做。
  4. 想想这个功能在做什么。我想到你在问题中提到的凝聚力。通常,函数应该只做一件事,因此不要将其命名为constructCarAndRunCar(),而是将一个函数构造为另一个函数来运行它。如果你的功能介于20到40行之间,那就太好了。
  5. 有时,这取决于项目,如果类纯粹是程序性的(仅由函数组成),您可能还希望在函数名前加上类。因此,如果您有一个负责运行模拟的课程,请为您的职能sim_pauseSimulation()sim_restartSimulation()命名。如果你的课程是基于OOP的,那么这不是一个问题。
  6. 不要在函数本身中使用底层数据结构;这些应该被抽象掉。不是使用addToVector()addToArray()这样的函数,而是将它们设为addToList()。如果这些是原型或数据结构可能会在以后发生变化,则尤其如此。
  7. 最后,在命名约定中保持一致。一旦你想出一个会议后,坚持下去。在考虑不一致的函数名时,会想到PHP。
  8. 快乐的编码! :)

答案 1 :(得分:2)

有时可能是你的功能太大而因此做了太多事情。尝试将您的功能分成其他功能,可能更清楚地调用每个单独的功能。

不要担心用一两个单词命名。有时候,如果函数做了一些可以用各种小句子来解释的东西,那么请继续命名函数,如果它能帮助其他开发人员了解正在发生的事情。

另一个建议是从别人那里获得反馈。通常来自另一个角度并且第一次看到该功能的其他人将更好地了解该功能的用途。

答案 2 :(得分:2)

我遵循以下规则:名称根据目的(为什么? - 设计决定)而不是内容(What,How? - 可以在代码中看到。)

对于函数,它几乎总是一个动作(动词),后跟参数名词和(或结果。(偏离主题,但变量不使用“arrayOfNames”或“listOfNames”,这些是类型信息但只是“名字”)。如果你部分地重构代码,这也可以避免不一致。

对于像对象创建这样的给定模式,一致并始终使用相同的命名,如“创建...”(有时不会“分配...”或“构建...”否则你或你的同事最终会刮伤他们的头部伤害)

答案 3 :(得分:1)

如果它仍然不适合,请给它最好的拍摄并重新考虑因素。

答案 4 :(得分:0)

转到www.thesaurus.com并尝试通过同义词找到更合适的名称。

答案 5 :(得分:0)

与函数名称几乎同样重要的是您与注释一致。许多IDE将使用正确格式化的注释,不仅为您可能正在使用的函数提供上下文相关的帮助,而且它们可用于生成文档。在经过很长一段时间或与其他开发人员合作后返回项目时,这是无价的

在学术环境中,它们可以很好地展示您的意图。

一个好的经验法则是[动词] returnDescription。使用GetName()类型函数很容易,并且不能普遍应用。在不引人注目的代码和描述性代码之间找到平衡很难。

这是.Net convention guide,但它适用于大多数语言。

答案 6 :(得分:0)

当我不必削减单词时,我发现命名函数更容易。只要你没有为谷歌开始页面做javascript,你就可以做更长的名字。

例如,你在apple cocoa框架中有方法dequeueReusableCellWithIdentifiermergeChangesFromContextDidSaveNotification

只要清楚该功能正在做什么,你可以随意命名,然后重构。

答案 7 :(得分:0)

作为我自己的实际规则,如果函数名太长,它应该在新对象中雾化。但是,我同意上面的所有帖子。顺便问一下,好的noob问题