Recordクラスを使いこなせるか?

こんばんは、Javaアドベントカレンダー、7日目を書かせていただきます。中尾です。

今回はRecordクラスのあり方を考えようと思います。

簡単にいうと、RecordクラスはLombok@Valueでできるイミュータブルなクラスのようなものです。

docs.oracle.com

blog.y-yuki.net

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 くらいの間で両方の特定を理解し使いこなすことが重要だと考えます。