スポンサーリンク

【Lombok】@Accessorsではなく、lombok.configを使う

スポンサーリンク

Lombok

Javaに使用される汎用ライブラリで、@Getter, @Setter等のannotationを使用することで、getter/setterをコンパイル時に自動生成してくれるので、コードベースが非常にシンプルになります。

MITライセンスですので、基本的にどのプロジェクトでも使用可能だと考えられます。勿論、法人用途で使用時にはプロジェクトルールに則って許可を取りましょう。

コーディング規約にあわせる

プロジェクトで採用されているコーディング規約によっては、フィールドにprefixが付いていることがあると思います。例えば、mFieldとかoFieldとかです。

Lombokでは@Getter, @Setterを使用した場合には、デフォルトではgetXxxx(), setXxxx(), Xxxxはフィールド名で定義されます。そのため、prefixが付いている場合、getter/setterのメソッド名が変になります。

これらを修正するためには、lombok.configを作成します。公式サイトにある通り、lombok.configを作成したディレクトリ以下に対して一括して設定を適用することが可能です。基本的にプロジェクト全体で適用するコーディング規約ですから、プロジェクトルートに配置することが多くなると思います。

prefixを取り除くためには以下になります。例はmFieldのmを取り除いて、getField(), setField()を生成するための設定です。

lombok.accessors.prefix += m

ちなみに公式サイトに-=の記述があって、てっきり”除去する”から”-=”なんだと勘違いして永遠にうまくいかない沼にはまりましたが、-=は上位の設定をrollbackするために使用するためのものです。

@Accessors

一応@Accessorsで個別のAnnotationごとにprefix設定等をすることが可能ですが、Accessorsではfluentを指定する程度で、prefixについてはlombok.configで一括指定すべきだと思います。

補足

ちなみに、検索しているとlombok.configはIntellij Pluginではサポートされていないとの記述があるポストが何個かヒットしますが、以下のようにconfigもサポートされているので問題ありません。

Refactoringについて

今ではIntellijもEclipseもデフォルトでlombokをプラグインでサポートしていますので、リファクタリングについても心配する必要はありません。

以下のようにFieldについてGetterを設定しており、あとからmFieldという名称を変更したいとなったときは、IDEのRefactoring機能(Refactor -> Rename)を使用することで、getter/setterのメソッド名も正しく変更されます。

public class A {
    @Getter
    int mField;
}

//どこかで
A a = new A();
a.getField();

これも一部の記載でリファクタリングが面倒という記載がありましたが、今はそのような心配はないようです。

タイトルとURLをコピーしました