Open gmelon opened 4 months ago
제가 생각했을 때는 User 클래스에 새 정보가 들어갈 시 초기 정보가 BASIC으로 고정된다는 조건이 변할 수도 있기 때문에, User 클래스 내에서 초기화 하는것은 확장성 면에 있어서 좋지 않다고 생각했습니다.
또한, 유저의 정보를 저장하는 틀(?)을 만드는 역할을 하는 유저 클래스에서, 유저의 속성 값을 직접 알고, 설정해 주는 것은 User 클래스의 책임이 아니라는 생각이 들었습니다.
뭔가 토프링 공부를 하기 이전에 생각했다면, User 클래스에 고정값을 미리 넣어놓고 add할 때마다 신경쓰지 않아도 된다는 것이 더 효율적이라고 생각했을것 같은데, 토프링을 배우면서 확장성을 고려하게 된 것 같아서 신기하기도 하고... 그러네용
도와준 사람: @limjongheok
객체는 소프트웨어 세계에 구현할 대상이고, 설계도(클래스)에 따라 소프트웨어 세계에 구현된 실체가 인스턴스입니다.
클래스는 설계도이기 때문에 비지니스 로직인 값을 가지면 안 됨
그렇다면 만약 초기값 설정이 필요 상황이 있을시 db 테이블 default 를 설정해 두면 어떨까요??
p.337 상단에 보면 아래와 같은 문장이 있습니다.
User 클래스에서 level 필드를 아예 처음부터 Level.BASIC으로 초기화해버리는 것이 부적절하다는 것을 설명하면서 나온 문장입니다. 이에 대한 대안으로 UserService.add() 에서 초기 값을 설정해주는 것을 제시하는데 User 클래스가 초기 값을 아는 것이 어떤 의미에서 부적절한 것인지 대강은 이해가 되는데 정확하게 납득이 되지 않아 질문 올려봅니다.