最终,您将需要进行某种测试以了解是否需要禁用该字段,并对boolean
值进行测试,因此最简单的方法boolean
就是简单地通过它。任何类型的参数传递,原语,对象等,都是相对便宜的,所以性能方面,这没有任何问题。
在设计方面,使用参数是有意义的,因为这确实是一个boolean
值的目的,指示做一件事或另一件事是真还是假。
您提出的任何其他解决方案都将是令人讨厌或缓慢的(我在看着您,Thread.currentThread().getStackTrace()
人们)并且将要求您测试一些值,但是您必须首先计算该值,这需要时间.
如果您真的不想传递参数,那么也许您可以使用对象中的某种状态来决定这一点,但最终这将只是一个boolean
字段而不是boolean
参数,所以实际上,您只是在做一样。另外,如果您在任何类型的并发系统中运行该代码,那么您将不得不添加同步,这只会进一步增加您可以通过将其作为参数传递来避免的代码复杂性。
我想,长话短说,只需使用一个参数。它是明智的、可读的,任何阅读你的代码的人都会立即明白你做了什么。不要在你的代码中做一些模糊的事情,这会妨碍可读性等等,只是因为它会“做一些很酷的事情”,比如 make 它,所以你不必传递参数。可以这样想:如果有人想从您添加的方法之外的其他方法中调用该方法,他们需要多长时间才能弄清楚如何调用它?
编辑:另一种选择是重载。您可以提供一些常用的默认值方法和带参数的方法。如果您发现启用该字段的频率高于禁用该字段的频率:
public void showDialog() {
showDialog(true);
}
public void showDialog(boolean fieldEnabled) {
// Show the dialog
}
然后在启用它的情况下打开对话框的任何地方都将调用第一个方法(或第二个方法true
),并且希望它被禁用的那些调用第二个方法并且必须通过false
。