编写代码片段的更简洁的方法
Posted
技术标签:
【中文标题】编写代码片段的更简洁的方法【英文标题】:Cleaner way to write code snippet 【发布时间】:2018-06-05 12:54:38 【问题描述】:我是java新手,想知道有没有更简单的写法
if(a == 10 || b == 10)
//stuff
在我看来,我尝试过这样的事情:
if(a||b == 10)
//stuff
因为 IMO 很直观,但这不是一回事。
【问题讨论】:
不,你不能让它更短。 如果if
下的语句为一行,可以去掉大括号
@AniketSahrawat 我强烈建议不要这样做,即使它是有效的代码。
在Java9你可以写if (Set.of(a,b).contains(10))
【参考方案1】:
不是更短,而是更“直观”的可读性:
boolean condA = (a == 10);
boolean condB = (b == 10);
if(condA || condA)
//stuff
始终牢记,目标不是编写最短可能的代码,而是最好的可维护性代码。
【讨论】:
【参考方案2】:不,我们不能这样做,因为在 java 的情况下,没有像这样比较变量的选项。 连你都写不出来
if(a||b) //staff
但是如果你会写那么你会得到这个错误信息
错误:二元运算符“||”的操作数类型错误
【讨论】:
【参考方案3】:是的,事实证明没有办法让它更短。
【讨论】:
【参考方案4】:如果您只是比较几个值,那么您最好继续当前的方法,因为没有任何东西可以缩短它。但是,如果您多次重复自己,那么您可以创建一个辅助函数来为您完成这项工作。
即
static boolean anyMatch(int comparisonValue, int... elements)
return Arrays.stream(elements)
.anyMatch(e -> e == comparisonValue);
然后这样称呼它:
if(anyMatch(10, a, b)) ...
【讨论】:
【参考方案5】:这不会像那样工作。您正在根据一个值检查两个变量的值,这最终是两个检查,if(a == 10 || b == 10)
。
但是,您可以将此检查修改为以下代码:
if(Arrays.asList(a,b).contains(10))
它会产生相同的行为,但它既不短也不易于阅读。
【讨论】:
你确定Arrays.asList()
的性能比||
好吗?
@AniketSahrawat 当然不是。这太糟糕了。它创建一个List
,然后contains
检查每个元素。
为什么这个答案没有投票?毫无疑问,与logicalOR
相比,这两个答案都存在性能问题,但它的语法更短。以上是关于编写代码片段的更简洁的方法的主要内容,如果未能解决你的问题,请参考以下文章
Android课程---Android Studio使用小技巧:提取方法代码片段