方法名称应该易于记忆吗?

GOT*_*O 0 2 c++ naming-conventions method-names

是否有任何官方C++建议涉及应在方法名称中披露的信息量?我问,因为我可以在互联网上找到大量的参考资料,但没有一个真正解释这一点.

我正在使用一个调用方法的C++类calculateIBANAndBICAndSaveRecordChainIfChanged,它很好地解释了该方法的作用.较短的名称将更容易记住,并且不需要智能感知或复制和粘贴来键入.它不那么具有描述性,是真实的,但应该记录功能.

bil*_*llz 12

calculateIBANAndBICAndSaveRecordChainIfChanged 被认为是一个糟糕的函数名称,它打破了单一功能做一件事的规则.

降低复杂性

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

CalculateIBAN
CalculateBIC
SaveRecordChain
IsRecordChainChanged
Run Code Online (Sandbox Code Playgroud)

要命名过程,请使用强动词后跟对象

具有功能内聚的过程通常对对象执行操作.该名称应反映该过程的作用,对对象的操作意味着动词加对象名称.PrintDocument(),CalcMonthlyRevenues(),CheckOrderlnfo()和RepaginateDocument()是良好过程名称的示例.

描述例程所做的一切

在例程的名称中,描述所有输出和副作用.如果例程计算报告总计并打开输出文件,则ComputeReportTotals()不是例程的适当名称.ComputeReportTotalsAndOpen-OutputFile()是一个足够的名称,但是太长而且太傻了.如果你有副作用的例程,你会有许多冗长,愚蠢的名字.治愈不是使用描述性较少的常规名称; 治疗的目的是让你直接发生事情而不是副作用.

避免使用无意义,含糊不清或无意义的动词

有些动词是弹性的,可以伸展以涵盖任何意义.诸如HandleCalculation(),PerformServices(),OutputUser(),ProcessInput()和DealWithOutput()之类的例程名称不会告诉您例程的作用.这些名称最多只能告诉您例程与计算,服务,用户,输入和输出有关.例外情况是在处理事件的特定技术意义上使用动词"句柄"时.

上述大多数要点均来自Code complete II.其他的好书Clean Code,The Clean Coder罗伯特·马丁

  • 如果将其作为新函数包装起来,则需要新函数的名称.实际上,您已经重构了现有函数,以便通过依次调用其他4个函数来工作.哪个都很好但与现有函数名称是否合适的问题无关. (4认同)
  • 我提到的功能在代码中使用了8次.你认为将每个函数调用分成四个(并重新键入代码)是个好主意吗? (2认同)
  • 作为现实生活中的一个例子,我在律师办公室工作(在人们用纸的时代).在案件结束后的某个时间,您需要获取该文件,从帐户中签名,并将其放入存档存储中.不出所料,律师并未将此称为"根据收到的付款检查发票和发票的账户,然后进入存档室并按客户名字母顺序排列到正确的文件柜中".他们称之为"deading",就像"你能把那些文件丢掉吗?". (2认同)