带有调用目的参数的显式方法命名或泛型方法名称

时间:2014-05-22 20:29:13

标签: java methods fully-qualified-naming

我有时偶然发现了对公共API方法进行方法命名的决定。

变式A:

public void play();
public void stop();
public void pause();

变式B:

public enum CallType {
            PLAY,
            STOP,
            PAUSE
        }
public void execute(CallType type);

我认为对于API客户端来说,拥有变量A的接口会更方便,因为不需要参数(和检查!)。

但我也认为对于变体B,公共界面也更小,开发人员的任务也更容易。

您对这些方法有何看法?

1 个答案:

答案 0 :(得分:1)

如果呼叫类型的数量合理低,我会说每个动作都有单独的方法(变体A)。它使界面更易于阅读,您不必将类的用户转移到另一个JavaDoc页面(枚举),以便了解他使用您的界面的选项。随着调用类型数量的增加,您可能会获得具有更大合同的接口(即,更多的方法),因此使用枚举可能是值得的。但请注意,在这种情况下,您的execute方法可能会变得过大(可能包含大量情况的switch语句)。

我认为答案应该由reasonably的含义给出,而且没有确切的答案。这取决于开发人员的偏好,组织中的编码标准,静态代码检查规则(如果您有分析器)等等。