【问题标题】:Explicit method naming or generic method name with call purpose parameter [closed]带有调用目的参数的显式方法命名或通用方法名称[关闭]
【发布时间】:2014-07-12 01:27:00
【问题描述】:

我有时会偶然发现公共 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 的公共接口也更小,开发人员的任务更容易。

您对这些方法有何看法?

【问题讨论】:

  • 请避免询问主要基于意见的问题。参考stackoverflow.com/help/dont-ask
  • 支持(或反对)B 的一个论点是,如果 CallType 的一组值发生变化,那么可能会出现运行时问题,而不是实现类的编译时故障。

标签: java methods fully-qualified-naming


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多