如何降低此方法的复杂性?

时间:2017-12-20 12:01:17

标签: java java-ee java-7

PS:CONST * - * =>常数

我需要使用Java 7语法降低此方法的复杂性。

public void myMethod(){
    if(condition1){
       menu.addItem(CONSTA-1);
    }
    if(condition2){
        menu.addItem(CONSTB-1);
    }
    if(condition3){
        menu.addItem(CONSTC-1);
        menu.addItem(CONSTC-2);
    }
    if(condition4){
        menu.addItem(CONSTD-1);
    }
    if(condition5){
        menu.addItem(CONSTE-1);
    }
}

2 个答案:

答案 0 :(得分:1)

使用Java 8,您可以考虑使用List<Pair<Predicate, List<MenuItem>>内容。

换句话说:当可以将每个条件提取到独立的 Predicate 对象中时,您可以执行以下操作:

for (Pair<Predicate, List<MenuItem> pair : thatList) {
  if (pair.first().test()) {
    pair.second().foreach(menu::addItem);

含义:迭代所有条件,对于第一个匹配,您检索相应的菜单项并添加它们。关键部分是要找到一个理智的方法来实际拥有每个test() 是对的。

你可以在Java7中做类似的事情(通过自己实现所需的类)。但那将是我眼中的过度工程事情。

答案 1 :(得分:1)

  

重构的基本规则是,方法应该足够小以容纳功能

因此,我们可以轻松地重构,如下所示,

scheduleFixedDelayTask