はじめに
lombokのアノテーションの意味を理解をしていることを前提として記事を書いています。
解説はしない。メモ用だ。
簡単な setter/getter
二通りの設計がある。
- 従来のメソッド
- チェーンメソッド
前者は、一行/一メソッドである。可読性重視コーディング方法、メソッドを細かくまとめたメソッドを書いていくことによって解消される。
後者は、一行/複数メソッドである。適切なフォーマットをしなければ可読性が下がってしまう。それとチェーンメソッドの設計( Builder クラス)がとんでもなく難しい。
これにパラメータの型を使用しているクラス(Map, Supplierなど)とかを使うと難易度、爆上がりか?
後者のチェーンメソッドで設計する。
従来のメソッド
古いライブラリ や 初心者向け などで見かけるコーディング設計
@Data
public class Test
implements ITest {
public int num;
public void testcode() {
// print -> 100
this.setNum(100);
this.getNum();
}
}
public interface ITest {
void setNum(int num);
int getNum();
}
チェーンメソッド
jquery などで見かけるコーディング設計
@Data
@Accessors(fluent = true)
public class Test
implements ITest {
public int num;
public void testcode() {
// print -> 500
this.num(500).num();
}
}
public interface ITest {
ITest num(int num);
int num();
}
プログラミング
lombokの@Dataによってかなり手間が省ける実装方法。
こういう方法にすごい憧れてたから今回は、とても満足した。
いちいち
public interface ICalc<NUMBER extends Number> {
ITest num(NUMBER num);
NUMBER num();
//
default ITest add(NUMBER num){
return this.num(num() + num);
}
default ITest sub(NUMBER num){
return this.num(num() - num);
}
default ITest mul(NUMBER num){
return this.num(num() * num);
}
default ITest div(NUMBER num){
return this.num(num() / num);
}
}
@Data
@Accessors(fluent = true)
public class CalcImpl
implements ICalc<Integer> {
private Integer num;
}