캡슐화 예제 4 질문입니다.
272
投稿した質問数 2
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
mem.verifyEmail();
回答 1
2
먼저 아래 코드는 이메일 인증 여부를 확인한 뒤에 이메일 인증 처리를 수행합니다.
if (!mem.isEmailVerified()) {
mem.verifyEmail();
}
여기서 isEmailVerified() 메서드와 verifyEmail() 메서드는 모두 mem의 내부 필드 데이터를 사용해서 상태를 확인하고 상태를 변경하죠. 게다가 '이메일 인증' 기능 자체는 '이메일이 이미 검증된 여부를 확인'하는 제약을 포함하고 있습니다. 즉 이메일 인증 기능은 검증 여부 확인을 포함해야 온전한 기능이 되는 거죠. 그래서 verifyEmail() 메서드를 다음과 같이 구현함으로써 '이메일 인증' 기능에 대한 캡슐화를 높일 수 있습니다.
void verifyEmail() {
if (isEmailVerified()) {
// 이미지 검증된 경우에 대한 처리
// 예를 들어, 익셉션 발생 등
throw new AlreadyEmailVerifiedException();
}
// 이메일 검증 상태로 변경하는 코드
...
}
또한 제약 확인과 상태 변경을 한 곳으로 모으면 다음과 같이 잘못된 코드를 만들 가능성도 줄어들죠.
if (mem.isEmailVerified()) { // 이미 검증했는데
mem.verifyEmail(); // 또 검증, 그런데 verifyEmail에서 검증 여부를 처리하지 않으면 인증 로직을 다시 실행
}
만약에 verifyEmail()에서 이메일 인증 시간을 현재 시간으로 설정한다거나 하면, 위 코드는 잘못된 인증 시간을 갖게 됩니다.
추상화 예제의 추상화하지 않은 구현 부분에서 질문있습니다.
0
446
1
캡슐화 하는 이유에 대해서
2
757
1
캡슐화 연습 2번
0
370
1
추상화 예제에서 추상 클래스를 사용하지 않고 인터페이스를 사용하신 이유가 궁금합니다.
0
269
2
범균님 안녕하세요 강의 수강중 궁금한점이 있어 질문 남겨 봅니다.
0
366
1
캡슐화 질문
0
322
1
DIP 관련해서 궁금한게 있습니다.
0
260
1
기능 분리 기준에 대한 질문이 있습니다.
1
361
2
서로 다른 구현 추상화에 대해서 질문이 있습니다.
2
369
2
의존 주입 예제 관련 질문입니다.
1
257
1
상속 재활용 단점 중 상위 클래스 변경 어려움에 대해서 질문이 있습니다.
1
316
2
캡슐화 연습4 질문 있습니다.
0
294
2
의존하는 대상이 많을 때 질문 드립니다.
0
265
1
추상화를 따라서 코딩해볼 수 있는 예제가 있을까요?
0
451
1
콘크리트 클래스를 직접 사용하는 경우 & NotifierFactory 관련 질문드립니다
1
277
1
Demeter's Law 설명이 잘 이해가 안갔습니다 ㅠㅠ
1
287
1
혹시 강의를 듣고 필기한 내용을 정리해서 블로그에 올려도 될까요?
0
359
2
캡슐화 예제 질문드립니다
0
546
4
DIP
1
375
3
예제코드는 따로 없나요?
1
231
0
NotifierFactory 를 또 추상화 한 이유가 궁금합니다
0
198
1
특정 클라우드에서 예외적으로 특정기능을 제공하지 않는 경우
6
214
1
상속과 조합 문의드립니다
1
267
1
강의자료를 받아볼수 있나요?
1
282
2

