객체를 생성할 때 저는 빌더 패턴을 사용하는데, 왜 그 빌더 패던을 사용해야 할까요??

이렇게 User 객체가 있다고 했을떄, 이름만 필요하고 다른 필드들은 필요가 없다고 한다. 생성자를 이용할 경우 나는, age,length에 더미데이터를 넣어주거나 name만 필요로 하는 생성자를 생성해줘야한다.

하지만, 한 두번만 사용한다면 상관이 없으나, 요구사항이 달라지거나 반복적인 변경을 필요로 하면 많은 시간 낭비를 요구하게 된다. 허나 빌더패턴을 이용하면 이를 동적으로 처리할 수 있다.

만약 User 클래스에 성별이라는 새로운 필드(변수)를 추가해야 한다고 하면,이미 이름으로만 생성자로 User객체를 만드는 코드가 있다한다면, 만약 이 생성자 코드로 100개넘게 객체를 생성한다면, 이 코드를 전부다 바꿔줘야하는 끔찍한 일이 발생한다.
하지만, 빌더패턴을 기반으로 코드가 작성되어 있다면 상관이 없다. 빌더 패턴은 유연하게 객체의 값을 설정하도록 돕기 떄문이다.

이렇게 코드를 작성했다면, 앞에 매개변수가 임의로 표시가 되긴하지만, 이는 intellj가 설정해줘서 그런가..? 하여튼 원래라면 앞에 저 매개변수가 무엇인지 표시가 되지 않기떄문에, 주현,25가 무엇을 설명하는지 알 수가 없다. 허나

빌더패턴을 사용해주게 되면, 이 값들이 무엇을 의미하는지 한 눈에 쉽게 알 수 있게 되어, 가독성을 높일 수 있다.
많은 개발자들은 setter패턴을 자주 사용한다. 허나, 이 패턴을 사용한다는 것은 불필요하게 변경 가능성을 열어두는 것이다. 이는 유지보수 시 값이 할당된 지점을 찾기 힘들게 만들며 불필요한 코드 리딩을 유발한다. 만약 할당하는 시점이 객체 생성 뿐이라면 객체에 잘못된 값이 들어왔을 때, 그 지점을 찾기가 매우 쉬우므로 유지보수성이 높아질 것이다. 그렇기에 클래스의 변수는 변경가능성을 최소화하게 한다.

이렇게 유저 클래스를 final을 붙여 불변성을 높일 수 있다. 허나, final을 붙일 수 없는 경우라면, setter을 넣어주지 않도록 한다.