编写代码片段的更简洁的方法

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 相比,这两个答案都存在性能问题,但它的语法更短。

以上是关于编写代码片段的更简洁的方法的主要内容,如果未能解决你的问题,请参考以下文章

20个简洁的 JS 代码片段

js简洁代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段

Atom编辑器入门到精通 Atom使用进阶

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

如何在Sublime Text中添加代码片段