命名功能困难

Rao*_*ouL 7 naming function

可能重复:
其他人发现命名类和方法是编程中最困难的部分之一?

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

当一个函数没有好名字时,你会怎么做?

SHC*_*SHC 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.

快乐的编码!:)

  • @Jamie它显示了对类型的主要关注。如今,编程已经发展到使用和接口比我们使用的实际类型更重要的地方。同样如SHC所指出的,如果类型发生更改,则即使接口和用法保持完全相同,也需要更改客户端代码中使用该类型的每个实例的名称。最后,它给用户带来了他们甚至可能不知道的实现细节。例如,许多Windows API类和结构对用户来说可能也是不透明的:它们只是在API函数中传递它们。 (2认同)