배경
코딩을 다시 하게 되면서 제 실력이 어느 정도인지 알게 되는 것 같습니다. (아직 제대로 할줄도 모르지만요 ㅎㅎ..)
지금 하고있는 프로젝트는 이전에 강의를 보면서 만들어 놓았던 것을 대부분 참고해서 만들어 갔다고 해도 과언이 아닐겁니다.
정신이 없는 상태로 하던 나날 중 개발자 친구와 술한잔을 하게 됐습니다. 이런 저런 이야기를 하던 도중 신입에게 가장 중요한건 기본. 지금 바로 옆에 사람이 와서 왜 이렇게 코드를 짜냐고 물어도 자신있게 대답할 수 있는 것이 중요하다고 조언해주었습니다.
다음날, 저는 제가 짠 코드를 좀 보면서 되짚어보았습니다. 무슨 목적으로 내가 이렇게 만든걸까? 명세서에 있던 고객의 요구사항이 이런 기능이 맞을까?... 이러한 생각들이 반복되면서 중복되는 값이 많은 dto들 대체 어떻게 간단하게 정리할수 있을까? 라는 생각도 해보게 되었습니다.
내용
간단한 예를 들어보면, ApiResponseDto와 ApiDetailResponseDto라는 자바 파일을 만들어 응답에 넣어주고 있었습니다.
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApiResponseDto {
private int status;
private String message;
private OrderResponseDto orderResponseDto;
}
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApiDetailResponseDto {
private int status;
private String message;
private OrderDetailResponseDto orderDetailResponseDto;
}
둘의 필드값은 마지막 부분만 보면 동일하게 status와 message를 포함하고 있습니다. 단순히 마지막 값이 다르기 때문에 다른 클래스를 만들어 복잡하게 사용하고 있었죠. 이 부분을 해결할 방법을 구글링해보다가 Java의 제네릭을 보게 되었습니다. 제네릭을 쓴다면 해결할 수 있을지도...!
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ApiResponseDto<T> {
private int status;
private String message;
private T data;
}
제네릭을 써서 ApiDetailResponseDto클래스를 없애버리고 하나로 통합해서 응답을 할 수 있게 되었습니다. 사실 제네릭에 대해서 완벽하게 이해했다! 라고는 할 수 없습니다. 하지만 반복되는 코드를 줄이고 개선한 부분에서 조금 뿌듯함도 느꼈고 재미도 있었습니다.
제네릭을 앞으로 자주 사용하게 될거같습니다. 그러니 좀 더 공부를 해봐야겠죠? 다음에는 제네릭을 공부한 내용으로 찾아오겠습니다.
'개발 > Java' 카테고리의 다른 글
Thread Pool (0) | 2024.11.22 |
---|---|
static method(정적 메서드) (1) | 2024.11.21 |
Request, Response Logging (1) | 2024.11.20 |
Swagger 적용해보기 (1) | 2024.11.19 |
Swagger를 이용한 Spring Boot API 명세작업(1) (1) | 2024.11.13 |