自作java2groovy

2019-03-05Groovy, Java

Groovyインストール後は java2groovy というJavaのコードをGroovyのコードに変換してくれるコマンドが用意されている。けれども結構気にくわない点が多い(不要な改行が追加される、setter、getterへの参照をプロパティ参照形式にしてほしいがしてくれない、など)

再発明になるかもしれないが、自作してみる。

ソースコード

#!/usr/bin/env groovy
def text = new File(args[0]).text
for (it in [
        /t/                              : " " * 4,
        /.get([a-zA-Z0-9_]+)s*(s*)/      : { all, part -> "." + part[0].toLowerCase() + part[1..-1] },
        /System.out./                    : "",
        /.set(w+)s*(([ja-zA-Z0-9_ "']+))/: { all, property, obj -> "." + property[0].toLowerCase() + property[1..-1] + " = " + obj },
]) {
    text = text.replaceAll(it.key, it.value)
}

[
        / +$/                                                        : "",
        /;$/                                                         : "",
        /(?<=^s*)(publics+)?(String|int|float|double|byte|boolean)s+/: "def ",
].each { key, value ->
    text = text.split("n").collect { it.replaceAll(key, value) }.join("n")
}
println text

機能

  • 各行の末尾の";"を除去
  • "System.out.〜"の記述から、System.out. を除去
  • o.getXxx()o.setYyy(b)の記述は、o.xxx、o.yyy = bに
  • 基本データ型の宣言部分は、Groovyっぽく def を使用

その他のマイアレンジ

  • 仕事で他の人の長いソース見るときに使うが、コメント見て何かいているかよく分からないソースが多いため(笑)、コメント除去
  • タブ文字を半角文字に

ノイズが少ないので、ソース解析によい

JavaのコードとGroovyのコードの違いの一つとして、 ノイズ量 がある。

コードの読みやすさって、どれだけそのコードが無駄な処理をしていないかというのがものすごく大きい。Groovyコードに変換すると、わずかながらソースの文字数がへるので解析しやすくなる。

でも、他のソースへ飛んだりは EclipseNetbeans つかった方が見やすいんだよなぁ。

2019-03-05Groovy, Java