회원가입할때 여러 조건을 따지잖아? 그때 코드야.
if 아이디 길이적절하면:
if 아이디 중복아니면:
if 비번이 유효하면(특수문자 제외느낌):
회원가입()
else:
print(비번에 특수문자 포함안됨)
else:
print(아이디 중복임)
else:
print(아이디 짧음)
이런 구조일때 if문을 최소화하는 코드를 짜고싶어. 이럴 경우에 어떻게 하면 될까? 함수로 짜자니 회원가입할때 빼곤 다시 안쓰니까 괜히 코드가 더 길어지고 복잡해질거같고 and로 묶자니 각각의 경우(길이가 적절하지 않을때, 중복일때, 비번이 유효하지 않을때)에 대처가 안되니까 이것도 별로고.. 뭔가 더 생각이 안나
너무 백지 상태에서 시작하는거같은데 다른사람 플젝도 참고해봐 @Vaild 사용하면 그렇게 많은 if 필요없어짐
그리고 if를 줄이고 싶으면 함수로 빼버리면 if없앨수 있음
이상 취준생의 의견이었다
@Valid는 고맙다. 근데 함수같은 경우는 글에도 적어놨지만 회원가입할때 빼고는 다시 재사용을 안하니까 코드가 더 길어져서 별로 아니야?
함수로 나누는건 꼭 재사용성만 고려하는게 아니라 가독성을 높이려고 쓸 수도 있는거임. 예를들어 폰번호 형식이 맞는지 검증한다면 if문 안에 구구절절 쓰는거보다 if(isValidPhoneNumber()) 하는게 가독성이 좋으니까.
흠.. 가독성 뿐만 아니라 성능도 만족시키기엔 너무 욕심일까?
현대 컴퓨터는 함수를 많이 쓴다고 성능이 떨어지진 않음. 하드웨어 자체 성능도 발달하고 컴파일러가 알아서 최적화를 해줘서
ㅇㅎ 그치. 실제로 어떤 코드 쓰든 단순 회원가입상에서는 큰 성능차이는 없을거같은데 뭔가 조금이라도 더 좋은 코드를 짜고싶었어. 고맙다
if가 싫으면 switch 쓰면 되지만 조삼모사고 그냥 메소드로 빼는게 제일 좋아보임
ㅇㅋㅇㅋ 고맙다
early return을 해
조건은 줄이지 마 오히려 가독성과 명시성과 유지보수성만 망침 원자적으로 잘 나눠두는게 좋아 추상화는 외부에 노출되는 부분에나 하는거지, 내부 기능에다가 추상화를 하면 그냥 난독화임
early return 이라는게 if (아이디가 중복이면): print(아이디 중복임) if (비번 유효하지 않으면): print(비번 유효하지 않음) if (길이가 너무 짧거나 길면): print(길이가 너무 짧거나 긺) 회원가입() 이런 구조야?
아 댓글 다니까 좀 줫같이 달렸는데 요지는 else를 위로 올려서 다 유효할때만 결과를 return 하는 구조로 가는거를 말하는거지?
ㅇㅇ 예외를 던져도 괜찮을듯
검증기를 추상화시키는거도 좋아 조건을 묶으라는게 아니고, 검증기 구현체들을 각각 만들어서 루프 돌면서 체크
검증기를 추상화 했을때 장점은 테스트 하기가 편해짐 각각 개별 검증기는 자기 조건만 테스트하면 되고, 검증기들 가져다 쓰는 코드는 극히 단순히 성공 실패만 리턴하는 테스트용 검증기로 일부 실패 시 전체 실패하는 로직만 태스트하면 됨 조건 추가할때마다 새로 추가되는 검증기 로직만 테스트 코드 작성하면 되니까 유지보수성이 올라가지
정규식?
디자인 패턴 공부의 중요성 ㅇㅇ - dc App