def antBuilder = new AntBuilder()
antBuilder.tar(basedir: getOutputDirectory(), destfile: getTarFile())
antBuilder.gzip(src: getTarFile(), destfile: getTarGzipFile())
antBuilder.delete(file: getTarFile())
antBuilder.delete(dir: getOutputDirectory(), includes:"*.xml")
我有一种方法可以做到这一点。如您所见,getTarFile()
方法被称为三次整体。编码它的首选方法是什么,使用getTarFile()
三次或定义一个局部变量来保存getTarFile()
的值并使用它?
答案 0 :(得分:1)
你可以像你想要的那样得到Groovy ......
你可以(例如)把它包装在一个闭包中:
def doStuff = { tar, out, gzip ->
new AntBuilder().with {
tar( basedir: out, destfile: tar )
gzip( src: tar, destfile: gzip )
delete( file: tar )
delete( dir: out, includes:"*.xml" )
}
}
并通过以下方式致电:
doStuff( getTarFile(), getOutputDirectory(), getTarGzipFile() )
无论你采取什么方式,除非getTarFile正在做大量工作(这似乎不太可能),否则你不会获得比可读性更多的东西......
虽然这本身就是胜利; - )
答案 1 :(得分:0)
'首选'与你能得到的主观性一样。
如果getTarFile()
的输出可以改变,那么你需要使用局部变量。
至于优化,很可能会由编译器编译或优化JIT。我怀疑你通过在局部变量中保存引用来注意到任何显着的性能差异。
答案 2 :(得分:0)
我使用本地(记住glowcoder的警告),因为IMO将tar文件的定义本地化为使用它的代码。
这提供了一个轻微的认知亮点:“嘿,在下面的代码中引用了一个tar文件。”
我正在优化以获得轻微的会话优势......但非常轻微。 OTOH,如果需要操作tar文件值,并且在getTarFile中这样做是不可取的,那么该更改将被本地化。
性能方面不值得考虑,除非你有异常密集的文件查找。似乎不太可能;)