Groovy - 压缩多个if语句

时间:2013-06-30 21:35:06

标签: java groovy

我是一个时髦的新手,所以请耐心等待。我喜欢groovy编写更少且通常更清晰的代码的能力,但我想弄清楚是否有更好或更易读的方法来压缩这些多个if语句。这是一个相当简单的代码片段,但必须有一个更好的方法来做到这一点。我是新手,所以任何代码片段都非常受欢迎。

if (!textOverlay) {
  textType = "" 
  if(url != null){
    Page getPage = resource.getResourceResolver().getResource(url).adaptTo(Page.class)
    if (getPage != null) {
      showLink = showLink + ".html"
        if (fragment.length() > 0) {
          url += "#"+fragment;
        }
    }
  }             
}  else { 
    //do something else
}

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这对嵌套没有帮助,但是有一些地方可以利用Groovy使代码更紧凑。我添加了一些解释性评论

if (!textOverlay) {
  textType = "" 

  // null is considered false, so no need to explicitly check for null
  if (url) {

    // getResourceResolver() replaced by resourceResolver
    // Page and Page.class are the same thing
    Page getPage = resource.resourceResolver.getResource(url).adaptTo(Page)

    // Groovy truth
    if (getPage) {

      // use String concatenation operator (also works in Java)
      showLink += ".html"

      // non-empty strings evaluate to true
      if (fragment) {
          // GString instead of string concatenation
          url += "#$fragment"
      }
    }
  }             
}  else { 
    //do something else
}