错误的方法名称及其对代码结构的描述

时间:2010-05-24 20:38:42

标签: oop methods method-names

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

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

例如,我一直看到:

public void preform___X___IfNecessary(...);

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

4 个答案:

答案 0 :(得分:3)

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

InsertImportQueueRecord

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

ImportItem

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

答案 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语句,这看起来很好。