我有一个用例,需要用不同的枚举参数调用类似的逻辑。尽管传入枚举参数可提供良好的代码可重用性,但有些人可能会争论使用名称表示其操作的名称创建多个函数的另一种方法具有良好的可读性。在编程社区中是否有强烈的选择意见?

例如。

enum e {
  aaa,
  bbb
};

foo(e enumParam) {
   // method impl using enumParam
}

Vs.

fooAaa() {
  // method impl using enum e.AAA
}

fooBbb() {
  // method impl using enum e.BBB
}

最佳答案

如果由于无法将逻辑放置在enum的实例方法中而必须使方法能够分派enum的类型,则在调用方具有来自其他地方。

比较

void doSomething(e enumParam) {
    Foo.foo(enumParam);
}




void doSomething(e enumParam) {
    switch(enumParam) {
        case e.aaa: Foo.fooAaa(); break;
        case e.bbb: Foo.fooBbb(); break;
        default: ... // Throw some exception
    }
}


在第一种情况下,呼叫者只需将e转发至enumParam。但是,在第二种情况下,呼叫者需要自己在foo上调度,重复使用类似的逻辑将呼叫路由到efooAaa

关于java - Java中具有不同名称的方法与具有不同枚举参数的单个方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40685276/

10-10 15:17