2009/02/04

自作java2groovy

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

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

#!/usr/bin/env groovy
def text = new File(args[0]).text
[
    /\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 },
    /\/\*\*(?ms).+?\*\// : "",
].each{
    text = text.replaceAll(it.key, it.value)
}

[
    / +$/ : "",
    /;$/ : "",
    /(?<=^\s*)(public\s+)?(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つかった方が見やすいんだよなぁ。

 

0 件のコメント:

コメントを投稿