실전 프로젝트 2주차. 테스트 코드를 짜봤는데 여러 문제가 생겼었다. 테스트코드에 대한 공부가 좀 더 필요해 보인다. 오늘의 TIL에는 Builder 패턴에 대해 정리해보려 한다.
Lombok 어노테이션인 @Builder 를 클래스나 생성자 위에 달면 편하게 빌더를 만들 수 있다.
만약 User Entity에 @Builder를 단다면 아래처럼 활용할 수 있다.
User user = User.builder()
.name("김춘복")
.password("1234")
.address("우리집")
.build()
Builder를 사용한다면 어떤 변수에 어떤 데이터를 넣어야 할지 가독성 있게 판별할 수 있고,
객체가 Immutable(불변)하기 때문에 데이터를 아무나 바꿀 수 없다는 장점이 있다.
그리고 순서에 상관없이 인수를 넣을 수 있다. 하지만 코드가 길어지는 단점이 있다.
반면 생성자는 필드가 Setter에 의해 변경될 수 있다.
생성자로 만들 때 넣어야 하는 인자가 많고 순서가 헷갈릴 수 있다면 Builder 패턴을 쓰는 것이 좋다. 그리고 builder보다 코드가 짧다.
이런 장점에도 불구하고 Builder를 쓰지 않고 DTO에 생성자를 만들어서 쓰는 방법을 채택했다. Builder를 써야할 경우 거기에 맞는 생성자가 준비 되어 있어야 하는데 그걸 직접 Entity에 만들기 부담스러웠고, DTO에 @Builder를 쓰느니 그냥 DTO에 생성자를 만들어서 쓰는 것이 더 편하게 쓸 수 있기 때문이었다. 그리고 테스트 코드가 안그래도 긴데 builder까지 쓰면 너무 길어졌다.