假设我有两个功能,boolean fA()
和boolean fB()
如果我写了另一个函数function(boolean b)
并且我调用了function(fA()||fB())
,那么如果fB()
返回true,则可能无法执行fA()
。
我喜欢这个功能,但在这里我需要两个函数来执行。明显的实施:
boolean temp = fA();
function(fB()||temp);
很难看,而且需要额外的一行会降低它的可读性。
有没有办法用Java或其他优雅方式强制进行评估,在没有辅助变量的情况下将其写入一行?
答案 0 :(得分:13)
答案 1 :(得分:1)
您正在尝试编写一些聪明的代码。这将损害长期可维护性,并可能导致人们试图修复'你聪明的代码并打破它。
正确的做法是简单明了地写下你正在做的事情:
boolean val = false;
val |= fA();
val |= fB();
function(val);
毫无疑问,当val
返回false时,参数fB()
是什么,或者fA()
是否被调用。代码可能比其他聪明的版本占用更多的行,但它清晰简洁,并准确地显示它正在做什么,并打算以不向某人建议某些其他功能的方式进行。