Programming-[Backend]/Java

[TIL][작성중] 자바 일급 객체로 소프트웨어 안정성 높이기, 한계점

컴퓨터 탐험가 찰리 2021. 11. 17. 12:08
728x90
반응형

https://jojoldu.tistory.com/412

 

일급 컬렉션 (First Class Collection)의 소개와 써야할 이유

최근 클린코드 & TDD 강의의 리뷰어로 참가하면서 많은 분들이 공통적으로 어려워 하는 개념 한가지를 발견하게 되었습니다. 바로 일급 컬렉션인데요. 왜 객체지향적으로, 리팩토링하기 쉬운 코

jojoldu.tistory.com

 

 

일급객체 만들기 : 객체를 클래스로 Wrapping하고 객체에 add나 set을 할 수 없게 막는다.


1. 불변으로 만들 수 있다. Setter, Getter를 만들지 않고, validation하는 코드를 넣어놓으면 외부에서 다른 사람이 파라미터로 받아오는 객체를 마음대로 수정할 수 없다.


2. 하나의 기능을 온전히 표현한다. 각 필드값을 마음대로 set하는 것이 아니라, 해당 로직에 필요한 필드값만 원하는 값으로 처리하므로, 다른 사람이 해당 객체를 보면 어떤 기능을 할 수 있는지 정확히 알 수 있다.


3. 유지보수에 유리하다. set을 2개 따로하는 로직이 프로젝트 전체에 퍼져있으면 내가 수정을 원하는 부분이 어딘지 알기 어렵지만,하나의 객체로 묶어놓으면 해당 부분만 찾아서 수정을 가하면 된다.

결론적으로, 일급 객체로 만들어서 처리하면 좀 더 명확하고 안정적인 프로그래밍이 가능해진다.

 


 

 

다만, 일급 객체를 만드는 것은 메서드가 충분히 공통화가 가능해서 다른 곳에서 사용될 가능성이 높을때 유효하다. 파라미터로 특정 Dto 타입을 받게 된다면 다른 도메인에서 이 객체를 참조하는 것은 기능 분리의 원리를 위배하게 된다. 애초에 Dto 타입을 파라미터로 받는 것이 좋지 않으므로 파라미터를 최대한 Dto와 상관없는 기본형, 자바의 참조형 타입으로 만들어주는 것이 좋다.

 

그리고 validation이 없다면 일급 객체를 만드는 의미가 없을 것 같다. 다른 사용자가 해당 일급 객체의 파라미터를 자유롭게 수정하여 전달한다면 일급 객체가 무효화될 수 있을 것 같다.

728x90
반응형