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