方法名称应该容易记住吗? P>是否有任何与方法名称中应该公开的信息量有关的官方C++建议?我这样问是因为我可以在网上找到很多参考资料,但没有一个能真正解释这一点 我用C++的方法来处理一个名为ActudieBand and Bixand SaveCordChanIfIfchange < /C> >的方法,这很好地解释了该方法所做的工作。较短的名称更容易记住,不需要intellisense或复制粘贴即可键入。它不太具有描述性,但功能应该被记录在案。

方法名称应该容易记住吗? P>是否有任何与方法名称中应该公开的信息量有关的官方C++建议?我这样问是因为我可以在网上找到很多参考资料,但没有一个能真正解释这一点 我用C++的方法来处理一个名为ActudieBand and Bixand SaveCordChanIfIfchange < /C> >的方法,这很好地解释了该方法所做的工作。较短的名称更容易记住,不需要intellisense或复制粘贴即可键入。它不太具有描述性,但功能应该被记录在案。,c++,naming-conventions,method-names,C++,Naming Conventions,Method Names,CalculateBanandBiCandSaveRecordChain如果被认为是一个不好的函数名,它会打破一个函数只做一件事的规则 降低复杂性 创建例程的一个最重要的原因是降低程序的复杂性。创建一个例程来隐藏信息,这样您就不需要考虑它了。当然,在编写例程时,您需要考虑这一点。但是在编写之后,您应该能够忘记细节,在不了解其内部工作的情况下使用例程。创建最小化代码大小、提高可维护性和提高正确性的例程的其他原因也是很好的理由,但是如果没有例程的抽象能力,复杂的程序就不可能进行智能管理。 您可以简单

CalculateBanandBiCandSaveRecordChain如果被认为是一个不好的函数名,它会打破一个函数只做一件事的规则

降低复杂性

创建例程的一个最重要的原因是降低程序的复杂性。创建一个例程来隐藏信息,这样您就不需要考虑它了。当然,在编写例程时,您需要考虑这一点。但是在编写之后,您应该能够忘记细节,在不了解其内部工作的情况下使用例程。创建最小化代码大小、提高可维护性和提高正确性的例程的其他原因也是很好的理由,但是如果没有例程的抽象能力,复杂的程序就不可能进行智能管理。 您可以简单地将此函数分解为以下函数:

CalculateIBAN
CalculateBIC
SaveRecordChain
IsRecordChainChanged
要命名一个过程,请使用一个强动词后跟一个对象

具有函数内聚性的过程通常对对象执行操作。名称应该反映过程所做的事情,对象上的操作意味着动词加对象名称。PrintDocument()、CalcMonthlyRevenues()、CheckOrderInfo()和RepaginateDocument()都是良好的过程名称示例

描述例行程序所做的一切

以例程的名义,描述所有输出和副作用。如果例程计算报表总计并打开输出文件,则ComputeReportTotals()不是该例程的适当名称。ComputerReportTotalsAndOpen-OutputFile()是一个合适的名称,但太长太傻了。如果你有副作用的习惯,你会有很多又长又傻的名字。解决方法不是使用描述性较低的例程名称;治疗方法是制定程序,使事情直接发生,而不是产生副作用

避免无意义、含糊或含糊不清的动词

有些动词是有弹性的,可以延伸到任何意义。诸如HandleCalculation()、PerformServices()、OutputUser()、ProcessInput()和DealWithOutput()之类的例程名称不会告诉您这些例程的功能。至多,这些名称告诉您例程与计算、服务、用户、输入和输出有关。例外情况是,动词“handle”用于处理事件的特定技术意义


以上几点大部分都是参考文献。其他的好书还有罗伯特·C·马丁的《干净的代码》和《干净的编码者》,理想情况下,一种方法只能做一件事。方法名称应该反映它的功能(这一点),然后只有程序才具有可读性

对于个人交互来说,这就足够了,也很有用,但是在完成应用程序之后,你必须重新考虑每个函数名,使其完全符合它们的意图。如果在团队或公司工作,请确保函数名反映了它的功能


在你的eg函数名中,我可以这样命名:
saverecordwithrespctoibanandbic()
在你的职业生涯中,你读写了太多的方法,以至于记不住它们的名字。大多数程序员需要从他们语言的标准库中查找函数名,更不用说他们或他们的团队开发的函数名了!最令人难忘的函数名对于维护代码并第一次看到调用的人来说毫无用处。此外,很有可能在六个月后你也不会记得了

这就是为什么我建议首先使用描述性名称,而不要担心记忆的难易性:毕竟,带有intellisense的IDE不会很快消失(引入它们是有很好的理由的——为了解决我们的记忆限制).

这是个人偏好的问题,尽管我认为
CalculateBanandBiCandSaveRecordChainIfChanged
太长,因此难以阅读和编码(除非您使用的是能够自动完成的智能编辑器)

还有两点:

  • 与其他功能一样,该功能需要分解为更小的部分 海报建议
  • 没有法律禁止评论你的标题来给出更多的信息 功能的详细描述,因此您不必 将其功能的各个方面构建到名称中

  • 为了回答这个直接的问题,我认为函数名不需要令人难忘。如果他们是,这很好,但是就像你说的,这些东西应该被记录下来。我可以查一下


    CalculateBanandBicandSaveRecordChainIfChanged
    对我来说太长了。除了需要c/p或自动完成才能使用它们带来的不便之外,我对长函数名的担心是,我也无法正确读取它们,因此具有类似“形状”的名称开始令人困惑地彼此相似

    因此,我建议您选择一个较短的名称。这些操作(计算两件事,并有条件地保存一个记录链)被分组在一起一定是有原因的。问题中没有描述这个原因,它存在于项目的规范或历史记录中。您应该找出原因,并寻找更简洁的函数名

    当命名一个函数时,你也可以考虑什么原因[]