c++ - 方法名应该容易记住吗?

标签 c++ naming-conventions method-names

是否有任何官方 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 CodeRobert C. MartinThe Clean Coder

关于c++ - 方法名应该容易记住吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256877/

相关文章:

c# - 获取所有类中的所有方法名称

java - 为什么我得到 "onCreate(Bundle) already defined"?

c++ - 在 C++ 中生成缺少一些零的新 guid 字符串

c++ - 在 C++ 类中定义一个 int 数组

python - Python 正则表达式的命名约定?

naming-conventions - "Pascal Case"这个词是从哪里来的?

unity3d - Unity 的良好命名约定是什么?

c++ - G++ 编译器无法区分同名变量和函数?

c++ - friend 和成员二元运算符的消歧

c++ - 默认情况下,非常量变量不是被视为外部变量吗?