是否有任何官方 C++ 建议涉及应在方法名称中公开的信息量?我问是因为我可以在 Internet 上找到大量引用资料,但没有一个能真正解释这一点。
我正在使用一个名为 calculateIBANAndBICAndSaveRecordChainIfChanged
的方法开发 C++ 类,这很好地解释了该方法的作用。较短的名称更容易记住,并且不需要智能感知或复制粘贴即可输入。它的描述性较差,但确实应该记录功能。
最佳答案
calculateIBANAndBICAndSaveRecordChainIfChanged
被认为是一个错误的函数名,它打破了一个函数只做一件事的规则。
降低复杂性
创建例程的一个最重要的原因是降低程序的复杂性。创建一个隐藏信息的例程,这样您就不需要考虑它。当然,您在编写例程时需要考虑它。但是在编写之后,您应该能够忘记细节并在不了解其内部工作原理的情况下使用例程。创建例程的其他原因——最小化代码大小、提高可维护性和提高正确性——也是很好的理由,但如果没有例程的抽象能力,复杂的程序将无法智能管理。 您可以简单地将此函数分解为以下函数:
CalculateIBAN
CalculateBIC
SaveRecordChain
IsRecordChainChanged
要命名过程,请使用强动词后跟宾语
具有功能内聚性的过程通常对对象执行操作。名称应该反射(reflect)过程的作用,并且对对象的操作意味着动词加宾语的名称。 PrintDocument()、CalcMonthlyRevenues()、CheckOrderlnfo() 和 RepaginateDocument() 是良好过程名称的示例。
描述例程所做的一切
在例程的名称中,描述所有输出和副作用。如果例程计算报告总计并打开输出文件,则 ComputeReportTotals() 不是例程的适当名称。 ComputeReportTotalsAndOpen-OutputFile() 是一个合适的名称,但太长而且太傻了。如果你的例程有副作用,你就会有很多又长又傻的名字。解决方法是不要使用描述性较弱的例程名称;解决方法是通过编程让事情直接发生,而不是产生副作用。
避免使用无意义、含糊或空洞的动词
一些动词是有弹性的,可以延伸到几乎任何意义。诸如 HandleCalculation()、PerformServices()、OutputUser()、ProcessInput() 和 DealWithOutput() 之类的例程名称并没有告诉您这些例程的作用。这些名字顶多告诉你,例程跟计算、服务、用户、输入输出有关。异常(exception)情况是在处理事件的特定技术意义上使用动词“处理”。
以上大部分观点来自Code complete II .其他好书是 Clean Code
,Robert C. Martin 的 The Clean Coder
关于c++ - 方法名应该容易记住吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256877/