【问题标题】:Multiple boolean variables as function parameters多个布尔变量作为函数参数
【发布时间】:2016-11-24 11:22:42
【问题描述】:

我的代码中有很多布尔变量,我想将它们传递给函数。

public myClass {

         boolean isA, isB, isC, isD, isE, isF, isG;

         // loop to set booleans true or false

         String str = addString(isA, isB, isC, isD, isE, isF, isG);
    }

private String addString(boolean isA, boolean isB, boolean isC, boolean isE, boolean isF, boolean isG) { 
 //code
}

程序的工作方式在任何时候都会有 2-3 个变量为真。我想避免将所有这些布尔值作为参数,所以我正在考虑将真正的布尔值传递给 ArrayList,如下所示:

public myClass {

         boolean isA, isB, isC, isD, isE, isF, isG;

         // loop to set booleans true or false

         ArrayList<boolean> list = new ArrayList();

         if(isA) list.add(isA);
         // same check for every variable

         String str = addString(list);
    }

private String addString(ArrayList<boolean>list) { 
      //code
}

有没有更好的方法?我想知道每次传递哪个布尔值。

【问题讨论】:

  • 你能展示你的代码吗?
  • 长参数列表被认为是代码异味。将所有这些布尔值包装在一个类或一个 Map 中并传递该对象。
  • 感谢您的回答。我刚刚添加了一些代码。
  • 这取决于您打算如何使用这些布尔值。您可以将它们包装在一个数组中并进行迭代。 boolean[] vars = {isA,isB,isC,isD,isE,isF,isG};
  • 非常感谢@Januson!它完全按照我的意愿工作。

标签: java arraylist netbeans boolean


【解决方案1】:

您可以传递可变数量的布尔参数,如下所示:

public void yourMethod(boolean .. booleans) {
    // Your code here
    for (boolean b : booleans) {
        // Doing something with each boolean argument
    }

}

你可以这样称呼它:

yourMethod(true, true, false);
yourMethod(true);
yourMethod(false, false, false, false);

【讨论】:

    【解决方案2】:

    另一种选择是构建器设计模式。

    https://www.geeksforgeeks.org/builder-design-pattern

    TL;DR:

    String res = new MyStringBuilder(/* any fixed params */)
        .setA(isA)
        .setB(isB)
        // ...
        .build();
    

    这也将使您免于重复您不关心的布尔值,例如。如果与您的情况无关,您可以跳过setA,并且默认值(例如,false)已经为您提供了所需的结果。这也使代码立即更具可读性,因为setAsetB 名称可以明确表示添加的内容(例如setAddPrefixsetAddHeader、...)

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2018-05-21
      • 2016-11-05
      相关资源
      最近更新 更多