4

(如果这是重新发布,请提前道歉,但我没有找到类似的帖子)

您在代码中看到了哪些糟糕的方法名称模式,以及它告诉了您关于代码的哪些内容。

例如,我不断看到:

public void preform___X___IfNecessary(...);

我认为这很糟糕,因为操作 X 具有条件反转。请注意,这是一个公共方法,因为类方法可能合法地需要像这样的私有助手

4

4 回答 4

3

有时,开发人员似乎只是在使用简洁的措辞时遇到了问题。我有一个命名程序的人

InsertImportQueueRecord

讨厌这个名字。我把它改成

ImportItem

前者不仅使用繁琐的措辞来表达一个简单的概念,而且不必要地揭示了实现细节。调用者不需要知道使用了队列,如果他们这样做了,我会将其命名为QueueItemImport,或者ScheduleImport指出项目的导入正在排队或计划中。此外,插入记录的概念是实现中的语言,而不是问题,应该避免。

于 2010-05-24T21:05:59.960 回答
2

thing()、doThing() 和 realDoThing()

当人们对函数应该做的事情并不完全清楚时,我会看到这一点。也许它首先检查是否需要任何操作,或者它更新缓存,或者它发送更改通知。谁知道?

有时这是由于不愿意更改方法名称。我讨厌这个。函数应该做他们听起来会做的事情。如果我要显着更改功能,我会更改名称,因此它迫使我修复所有调用者。

于 2010-05-24T21:15:16.757 回答
1

如果无法制定出简洁的方法名称,那么这很好地表明该方法正在尝试做太多事情并且应该考虑重构。

一个明显的例子是ValidateFormData_PersistToDB_SendEmail().

虽然我是 C# 开发人员,但无论如何我都不敢使用下划线。

于 2010-05-24T20:43:40.753 回答
1

我最近注意到的另一个,一堆私有方法的形式:

private void SOMETHINGBecauseOf__a__(..);
private void SOMETHINGBecauseOf__b__(..);
private void SOMETHINGBecauseOf__c__(..);

我想不出一个很好的理由在方法中使用因为Of,也想不出做同样的事情。对于一种方法中的 switch/if 语句,这看起来是一个很好的例子。

于 2010-05-26T19:42:33.820 回答