こんばんは、Javaのアドベントカレンダー、7日目を書かせていただきます。中尾です。
今回はRecordクラスのあり方を考えようと思います。
簡単にいうと、RecordクラスはLombokで @Value
でできるイミュータブルなクラスのようなものです。
public class Main{ public static void main(String []args){ var user = new User("Hello","World"); System.out.println(user.fullName()); } } record User( String firstName, String lastName ) { public String fullName(){ return this.firstName + this.lastName; } } // 今までだと // import lombok.Value; // @Value // public class User { // private String firstName; // // private String lastName; // public String fullName(){ // return this.firstName + this.lastName; // } // }
簡単ですね!!!
Lombokに依存されないコードになりました!
これからは積極的にRecordをつかっていきましょう。
...
...
...
とはならないのが現実です。
簡単ですが、今までのコードからいきなり変わると思います。
今まで Lombokや自前で実装していた箇所をRecordクラスにリファクタリングする意味はあるのでしょうか?っと考えます。
個人的な見解として、今のままで十分ではないかと思います。
理由は一つです。メリットがそこまでないからです。
そもそも Immutable
が 100% 良いのでしょうか?
Immutable
にすると、安全ですが変更容易が失われます。可読性も下がりメンテナンス性が低くなります。
そもそも論ですが、そこまで Immutable
にする必要はありますか?
現在 Immutable
になっていて、無理に mutable
にする必要もありませんが、Recordクラスに変更する必要はないと思います。
潔癖症で 0 or 100 ではなく ある程度 30 or 70 くらいの間で両方の特定を理解し使いこなすことが重要だと考えます。