きしだのはてな このページをアンテナに追加 RSSフィード

2013-07-30(火) JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由

[]JavaIDEのアクセッサ生成よりlombokを使ったほうがいい理由 12:09 JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由を含むブックマーク

lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。

ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできますが、ぼくはlombokを導入するべきだと考えて、lombokを使うようにしました。

このとき「lombokを導入するべき」と考えた理由を書いておきます。


lombokとは

lombokは冒頭でも書いたように、Javaのアクセッサなどを生成してくれるライブラリです。

Project Lombok


import lombok.*;

@Setter @Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class LombokSample {
    private String foo;
    private int bar;
    
    public static void main(String[] args) {
        LombokSample ls = new LombokSample("ee", 12);
        System.out.println(ls.getFoo());
        System.out.println(ls);
    }
}

続きを読む

kikutaro777kikutaro777 2013/07/30 17:28 最後に書いてある「フィールド名の変更」ですが、僕は、NetBeans左下のナビゲータでアクセサを右クリックして「リファクタリング」してます。こうすると、まず使ってるところは全部書き換わるので、そのあとに定義元のフィールド名だけを変えてます。少しだけ楽です。

あと、アクセサ使ってる「使用状況を検索」する場合にも、左下のナビゲータから行うほうが安全だったり(^^;

それと地味なメリットですが納品時に「すべてのメソッドにコメントを!」とか求められるようなケースではアクセサでのコメント記述が軽減されますね(^^;逆に言うとJavaDocでアクセサメソッドが出てこないので微妙かもしれませんが。

nowokaynowokay 2013/07/30 19:46 「使用状況を検索」ではナビゲータつかってたけど、リファクタリングもできるのですね。それは気づかなかった。
アクセッサメソッドにコメントついてくれたらすごくうれしいですよね。

xuweixuwei 2013/07/30 21:47 自分もlombok好きで結構使ったことあるんですが、ToString以外の残念情報としては、内部的に無理やりな変換してるので
「eclipseのコンパイラだとコンパイルできるのに、コマンドラインからjavacやると死ぬようになる」ということがわりと起きます(最新のversion0.12.0で確認)
そうすると、jenkinsでビルドが難しくなったり・・・

nowokaynowokay 2013/07/31 02:16 普通にjavacでコンパイルしてますが、コンパイル失敗するようなことはないですね、いまのところ。まあ、数千行のコードですけど。
どういうパターンで死ぬんでしょう?

xuweixuwei 2013/07/31 15:22 はっきりjavacが死ぬパターン切り出せてないんですけど、valを多用すると簡単に死ぬ気がします。
@Setter や @Getter などのメソッド生成系なら発生しないのかも?

nowokaynowokay 2013/08/01 04:56 あぁ、たしかにvalは使ってないですね。

アノテーションプロセッサが通ったあとの通常処理は普通のJavaコードのコンパイルなのですけど、コンパイラ本体で死ぬとは思えないんですよねぇ。とするとAPTで死んでると考えれるんですけど、Lombok APTはECJでもjavacでも同じものを使うので共通のはずで、それが片側で落ちるとなると、メモリ割り当て不足かなーと思ったり。
@Setter @Getterに比べて型推論はメモリ食いそうだし。

xuweixuwei 2013/08/01 07:06 いやこんな感じで、大概ヌルポとかで死ぬので、メモリ関連ではないと思うんですよね。

https://gist.github.com/xuwei-k/6126569

lombokの内部アーキテクチャ詳しくは把握してないですけど、このあたり

https://github.com/rzwitserloot/lombok/tree/v0.12.0/src/core/lombok/eclipse
https://github.com/rzwitserloot/lombok/tree/v0.12.0/src/core/lombok/javac

で、「javacとeclipseのコンパイラで違う処理を行う部分がある程度あって、そのせいで片方で失敗するという現象が起きる」
という予想なのですが

nowokaynowokay 2013/08/01 19:01 あぁ、中でコンパイラ別の処理があるんですね。しかしそうなるとval使いにくいですねぇ。

2013-07-17(水) 英単語帳、1冊の1/3すすんだ

英単語帳、1冊の1/3すすんだ 10:04 英単語帳、1冊の1/3すすんだを含むブックマーク

英単語帳を買ってから、ちょうど2ヶ月で1冊の1/3進みました。

英単語帳を買ったら思いのほか面白かった


つまり、12レベルある中のレベル4の1000語がおわったということです。

とはいえ、全部覚えてるわけではない、というかむしろほとんど覚えてはいないのだけど、知らない単語が見たことある単語になるというのが、ちょっとうれしい。

ただ、このあたりはまだ、ほとんどが知っている単語か知っている単語の変化形でした。


でも、なんか英語を読むことが以前より苦にならなくなってきました。あと、ちょっと聞き取りもよくなった気が。

毎日英語に触れるというのが一番影響が大きいのかも。

究極の英単語SVL〈Vol.2〉中級の3000語

究極の英単語SVL〈Vol.2〉中級の3000語

トラックバック - http://d.hatena.ne.jp/nowokay/20130717