강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

정승환님의 프로필 이미지
정승환

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Member 도메인 코드 개선

member의 password null 체크 로직

작성

·

12

0

안녕하세요! 토비님 좋은 강의 잘 듣고 있습니다 :)
별거 아닌것 같긴합니다만..
도메인 코드 개선중 문득 궁금한 점이 생겨서 문의남겨봅니다..!
Member를 생성하는 정적 펙토리 메소드에서
member.passwordHash = requireNonNull(passwordEncoder.encode(createRequest.password()));

이렇게 암호화된 값에 대한 null 체크를 하도록 구현하셨습니다.
그런데 아래와 같이 다른 파라미터처럼 암호화를 하기전에 password 파라미터 자체를 null 체크하는게 일관성이 있다고 생각되는데 암호화를 한 후 null체크를 하신 토비님의 의도가 궁금합니다!!
member.passwordHash = passwordEncoder.encode(requireNonNull(createRequest.password()));

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 정승환님께서 올려주신 질문에 대해 답변드리겠습니다.

비밀번호 Null 체크 로직에 대한 고찰

비밀번호를 포함한 주요 데이터는, 시스템에서 예외 없이 처리되어야 하는 필수적인 요소입니다. 일반적으로 입력된 비밀번호 값 자체에 대한 null 체크는 코드의 일관성을 유지하는 데 도움이 됩니다. 이렇게 null 체크를 통해 초기 단계에서 잠재적인 오류를 미리 방지할 수 있습니다.

비밀번호 암호화 후 null 체크의 이유

비밀번호를 암호화한 후에 null 체크를 수행하는 이유는, 실제로 암호화 과정 중에 문제가 발생할 수 있는 경우에 대비하기 위함일 수 있습니다. 다음과 같은 상황들이 있을 수 있습니다:

  • 암호화 실패 발생 가능성: 비밀번호가 비정상적인 상황에서 암호화 도중에 예상하지 못한 null 값이 반환될 경우에 대비하기 위한 방어적 프로그래밍 방법으로 볼 수 있습니다.

  • 암호화 결과의 유효성 보장: 암호화된 결과값이 정상적으로 생성되지 않은 경우, 이후 처리에서 발생할 수 있는 문제를 미리 감지하기 위함입니다.

하지만, 함수 호출의 일관성과 초기에 명확한 예외 처리를 고려한다면, 말씀하신 대로 암호화를 수행하기 전 입력 값 자체에 대한 null 체크를 우선적으로 수행하는 것이 코드의 가독성 및 유지보수 측면에서 도움이 될 수 있습니다. 이를 통해 예외가 발생할 지점을 명확하게 지정할 수 있습니다.

위와 같은 설명을 기반으로, 정승환님께서 코드 작성 시에 각각의 상황 및 코드의 목적에 따라 적절한 방식으로 null 체크를 설정하는 것이 바람직합니다.

관련하여 앞서 다루어진 게시글에서 풍부한 설명과 토비님만의 의견을 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정승환님의 프로필 이미지
정승환

작성한 질문수

질문하기