(如果这是重新发布,请提前道歉但我没有找到类似的帖子)
您在代码中看到了哪些糟糕的方法名称模式以及它告诉您的代码。
例如,我一直看到:
public void preform___X___IfNecessary(...);
我认为这很糟糕,因为操作X具有条件反转。请注意,这是一个公共方法,因为类方法可能合法地需要像这样的私有帮助器
答案 0 :(得分:3)
有时候,开发人员似乎在使用简洁的措辞时遇到了问题。我有一个人命名了一个程序
InsertImportQueueRecord
我讨厌这个名字。我把它改成了
ImportItem
前者不仅使用繁琐的措辞来表达一个简单的概念,而且不必要地揭示实现细节。调用者不需要知道是否使用了队列,如果他们这样做了,我会将其命名为QueueItemImport
或ScheduleImport
,以指出项目的导入正在排队或安排。此外,插入记录的概念是实现中的语言,而不是问题,应该避免使用。
答案 1 :(得分:2)
thing(),doThing()和reallyDoThing()
当人们不完全清楚函数应该做的事情时,我会看到这一点。也许它首先检查是否需要任何操作,或者更新缓存,还是发送更改通知。谁知道?
有时这是由于不愿意更改方法名称。我讨厌这个。功能应该做他们听起来像他们会做的事情。如果我无论如何都要更改功能,我会更改名称,因此它会强制我修复所有来电者。
答案 2 :(得分:1)
如果一个简洁的方法名称无法解决,那么这是一个很好的迹象,表明该方法试图做太多,应该考虑重构。
一个明显的例子是ValidateFormData_PersistToDB_SendEmail()
。
虽然我是C#开发人员,但我还是不敢使用下划线。
答案 3 :(得分:1)
我最近注意到的另一个,形式的一堆私有方法:
private void SOMETHINGBecauseOf__a__(..);
private void SOMETHINGBecauseOf__b__(..);
private void SOMETHINGBecauseOf__c__(..);
我想不出一个很好的理由在一个方法中使用SinceOf,也不能对同一个SOMETHING进行排序。对于一个方法中的switch / if语句,这看起来很好。