设计:方法应该做多少?

时间:2015-02-24 12:55:29

标签: java

我理解一种方法应该有效地用于单一目的。但是,如果我的方法(也充当API)被命名为execute()?

所以这些东西是这样的:

void execute() {
    /* some steps to initialize stuff */
    List<String> dataToBeExecuted = mainClass.getData();
    /* initialization ends */

    /* steps to actually execute data */
    for( ...) {
        try {
            /* generate args to be passed to executeData() */
            otherClass.executeData(args.. , dataToBeExecuted);
        } catch {
            /* log stuff */
        }
    }
    /* execution ends */

    /* steps to do some validation */
}

好的,现在这个功能本身正在做三件事,

* initialize stuff * execute Data * validate stuff

它可以分解为3种方法,但我认为既然逻辑很简单就可以保存在父execute()方法中。

什么是正确的方法?

1 个答案:

答案 0 :(得分:2)

这不是逻辑是否简单的问题。这是数据完整性的问题。例如:

  • 初始化操作是否会将数据保留在某些可曝光的状态?意思是,初始化后对象可能发生什么事情对执行有害?
  • 类的客户端获取初始化但未执行的对象是否有意义?或已执行但未经过验证?
  • 除了在初始化对象上执行之外,还有其他可能的操作吗?还是查询?或者执行是初始化后唯一自然发生的事情吗?

这样的问题的答案将指导决定执行是单一的公共方法,还是分成三个。 (当然,你总是可以在内部将它分成三个私有方法。)