我有时偶然发现了对公共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,公共界面也更小,开发人员的任务也更容易。
您对这些方法有何看法?
答案 0 :(得分:1)
如果呼叫类型的数量合理低,我会说每个动作都有单独的方法(变体A)。它使界面更易于阅读,您不必将类的用户转移到另一个JavaDoc页面(枚举),以便了解他使用您的界面的选项。随着调用类型数量的增加,您可能会获得具有更大合同的接口(即,更多的方法),因此使用枚举可能是值得的。但请注意,在这种情况下,您的execute
方法可能会变得过大(可能包含大量情况的switch
语句)。
我认为答案应该由reasonably
的含义给出,而且没有确切的答案。这取决于开发人员的偏好,组织中的编码标准,静态代码检查规则(如果您有分析器)等等。