如果小字句会用的话,切勿使用长字。
我认为您的“方法名称的长度与方法的长度成正比”的论点并没有真正成立。
以您提供的示例为例:“ getNumberOfSkinCareEligibleItemsWithinTransaction”。在我看来,这听起来像是一件事:它计算属于某个类别的交易中的项目数。当然,我不能不看该方法的实际代码就做出判断,但这听起来对我来说是一个好方法。
另一方面,我看到了很多方法的名称非常简短,这些名称可以做很多工作,例如“ processSale”或流行的“ doStuff”。
我认为很难对方法名称的长度给出严格的规定,但目标应该是:足够长以传达函数的作用,足够短以使可读。在此示例中,我认为“ getSkinCareCount”可能就足够了。问题是您需要区分什么。如果您有一个功能可以计算交易中符合皮肤护理项目的功能,而另一个功能可以计算其他事物中符合皮肤护理项目的功能,那么“ withinTransactions”会增加价值。但是,如果在交易之外谈论这些项目并不意味着什么,那么用这些多余的信息来弄乱名字就毫无意义。
第二,我认为假设任何可管理长度的名称都能告诉您该函数在除最琐碎的情况以外的所有情况中的确切功能是不现实的。一个现实的目标是创建一个给读者一个线索的名称,并在以后记住该名称。就像,如果我试图找到计算达到扭曲速度需要消耗多少反物质的代码,如果我查看函数名称并看到“ calibrateTransporter”,“ firePhasers”和“ calcAntimatterBurn”,那么很明显前两个不是,但第三个可能是。如果我检查发现确实是我要寻找的那个,那么很容易记住,当我明天回来为这个问题做更多工作时。够了
三个相似的长名称比短名称更容易混淆。如果我有两个名为“ calcSalesmanPay”和“ calcGeekPay”的函数,那么我可以快速猜出哪个函数。但是,如果将它们分别称为“ calculateMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation”和“ calculateMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation”,则我必须研究这些名称以了解哪个是哪个。在这种情况下,名称中的额外信息可能适得其反。它将半秒钟的思考变为30秒钟的思考。