-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
생성자 코드에 validation코드도 넣을 수 없을까? #22
Comments
#11 |
씨유도 같은 의견이군여! 그런데 또 궁금한 것이 있어요! |
@qhals321 저도 늦게남아 읽으면서 저도 이 부분에 대해서 고민이 되네요! 로또 미션에서 게임 머니(양수)값을 입력한느 동시에 잘못된 입력이라 표시가 되야한느데, 이를 사용하는 시점에서 에러가 발생하면, 문제가 될것 같네요.. |
Validation만을 위한 인터페이스가 있으면 어떨까요? (인터페이스 주입 -> 검증된 객체 반환 ) |
저두 무조건 pure한 생성자는 과유불급이라 생각합니다~~ 생성자가 복잡해지면 안 된다는 내용엔 100% 동의하지만 할당할 property의 validate만큼은 객체가 정말 역할을 다 하라고 요구받았을 때 "실은 내가 할당을 잘 못 받았어..ㅎㅎ" 라고 징징거리는 객체는 우아하지 않네요 |
이펙티브 자바 아이템 49. 매개변수가 유효한지 검사하라 파트에 이러한 내용이 있네요.
이렇듯 매개변수가 유효한지는 메서드 몸체가 시작되기 전에 검사해야한다고 하는데요, 그 이유로는 다음과 같은 것들을 들었어요.
그리고 또, 이펙티브 자바에서는 이 책(엘옵)의 주장을 메서드 몸체 실행 전에 매개변수 유효성을 검사해야한다는 규칙의 예외로서 인정하고 있는데요, 그 이유는 다음과 같아요.
아무튼 주절주절했지만 결론은 생성자 내부에서 매개변수에 대한 유효성 검사를 실행하되 그 비용이 너무 크다면 이후에 맡길 수 있지 않을까..? ㅋㅋㅋ |
재미있는 관점을 하나 소개해 보도록 하지. |
조엔 글을 읽으면서 저도 이 부분에 대해 다른 분들의 의견이 궁금하더라고요~!!!
"생성자 코드에 validation코드도 넣을 수 없을까?"
제 생각부터 이야기하면 예고르 형님의 말투를 따라하면 "넣어야 합니다!!"
엘레강트 오브젝트 책에는 "객체를 인스턴스화하는 동안에는 객체를 만드는 일 이외에는 어떤 일도 수행하지 않습니다."라는 글이 있습니다!
객체는 생성할 수 있을 때만 생성해야한다고 생각합니다. 만일, 잘못된 값으로 만들어달라고 부탁하면 바로 "이 재료로는 못 만들어줘!" 라는 메시지를 클라이언트에게 표현해야하지 않을까 생각합니다.
만일 잘못된 값으로 넣었는데 사용하는 시점까지 미룬다면 대학교때 팀프로젝트 본인 이름 올려놓고 발표 당일에 "이거 못해!!"라는 의미처럼 느껴지더라고요...
그리고 예외를 발생하는 것을 계속 미룬다면 예외 trace를 살펴볼 때도 많이 힘들 거라고 생각들어요!
즉, 객체 생성자 안에는 validation 코드는 들어가도 된다! 라고 생각드네요.
다른 분들의 의견은 어떤가요???
좋은 의문점 고마워요 조엔!!
The text was updated successfully, but these errors were encountered: