Nested Class, Inner Static Class?
- 개발을 하다보면 한 도메인에서 여러 종류의 dto가 필요(request, response 등등)
- 여러 개의 dto를 생성할 것인지, inner static class로 묶을 것인지 고민
1. 여러 개의 dto
public class UserRegister {
private String name;
...
}
public class UserUpdate {
private int id;
private String name;
...
}
2. Nested Class
public class User {
public static Class Register {
private String name;
...
}
public static class Update {
private int id;
private String name;
...
}
}
- 하나의 class 하위에 관련 dto가 모두 모여 있음
내 생각
여러 개의 dto 사용
why?
1. 현 시스템은 mybatis를 활용, parameterType, resultType 선언시 불편함
- fullPackageName.ClassName.$InnerClassName
2. nasted class의 naming이 쉽거나 짧지 않다.
- 어차피 클래스 호출시 ClassName.InnerClassName 으로 호출하고 있음
3. 클래스들의 통일성
- innerClass가 필요한 경우가 있고 아닌 경우가 존재 -> 통일성 해침
4. inner class의 존재 이유를 생각하자
- inner Class는 기본적으로 해당 클래스 내에서만 사용하고자 선언하는 것
- 외부단(controller 등)에서 사용할 dto를 innerClass로 두는 것은 석연치 않다.