Java Groovy-压缩多个if语句

Java Groovy-压缩多个if语句,java,groovy,Java,Groovy,我是一个很棒的新手,所以请容忍我。我喜欢groovy编写更少、更干净的代码的能力,但我想知道是否有更好或更可读的方法来压缩这些多if语句。这是一个相当简单的代码片段,但必须有更好的方法来实现这一点。我是个新手,所以非常感谢任何代码片段 if (!textOverlay) { textType = "" if(url != null){ Page getPage = resource.getResourceResolver().getResource(url).adaptTo(P

我是一个很棒的新手,所以请容忍我。我喜欢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
}

提前感谢您的帮助

这对嵌套没有帮助,但是在一些地方,您可以利用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
}

我看不出它怎么能更紧凑、更具可读性。那代码怎么了?除了它似乎有很多责任(许多变量似乎无关),我没有看到任何代码复制。你应该考虑使用<代码> URI < /代码>,而不是手工构建URL…它将包含所有讨厌的东西,比如编码等,它的构造函数是“抗空的”,我一直认为使用多个嵌套if语句是不好的做法,这可能是错误的。感谢您的提示@fgeIt确实增加了代码的复杂性。但解决办法不是“压缩”它们。解决方案是将责任隔离到其他子方法中:
if(textOverlay){doSomething();}else{doSomethingElse();}
。递归地应用此规则,直到您拥有具有唯一、明确职责的方法为止。