-
Notifications
You must be signed in to change notification settings - Fork 35
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
[나윤주] sprint4 #109
The head ref may contain hidden characters: "Bascic-\uB098\uC724\uC8FC-m4"
[나윤주] sprint4 #109
Conversation
} | ||
}, | ||
rules: { | ||
'val-email': { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p4;
val-email
, val-password
등의 각 인풋의 유효성 관련 key들이 코드내에서 많이 사용되고 있네요!
요런 항목들은 한 번더 상수화해서 관리하면, 오타 등의 휴먼 에러를 더 줄일 수 있을 것 같아요!
보통 요렇게 상수화 시킨값들은 대문자와 언더바 패턴을 많이 사용해요!
const VALIDATE_LIST = Object.freeze({
EMAIL: 'val-email',
NICKNAME: 'val-nickname',
CONFIRM_PASSWORD: 'val-confirm-password',
...
})
rules: {
[VALIDATE_LIST.EMAIL]: {...},
[VALIDATE_LIST.NICKNAME]: {...},
}
|
||
form.addEventListener('submit', function (event) { | ||
event.preventDefault(); | ||
if (validateEmail() && validatePassword()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p4;
요거는 checkFormValidity()로도 가능하지 않을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 그러네요. 중복 줄일 수 있네요!!
} | ||
|
||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3;
조건문들이 중첩이 많아서, 가독성이 다소 떨어져 보이는 것 같아요!
요럴때 switch 문을 활용해서 input.name 별로 분기를 나누고,
각 input.name에서 사용되는 로직들을 별개의 함수로 분리하면 가독성이 훨씬 좋을 것 같아요!
ex)
const checkEmailValue = () => {
const emailValue = form.email.value.trim();
const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
if (emailValue === "") {
setErrorFor(input, "이메일을 입력해주세요.");
return;
}
if (!emailPattern.test(emailValue)) {
setErrorFor(input, "잘못된 이메일 형식입니다.");
return;
}
setSuccessFor(input);
}
...
// 기타 다른 인풋에 대한 검증 함수들..
function checkInputs(input) {
switch (input.name) {
case 'email':
checkEmailValue();
break;
case 'password':
checkPasswordValue();
break;
case 'confirmPassword':
checkConfirmPasswordValue();
break;
case 'nickname':
checkNickname();
break;
default:
break;
}
}
} | ||
} | ||
|
||
function checkAllInputs() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
p3;
위에서 checkEmailValue() 처럼 각 inputValue별로 함수를 분리해놓은 경우
여기서도 재사용이 가능할 것 같아요!
const emailValid = checkEmailValue(form.email.value, true);
...
필요한 경우에는 checkEmailValue()에 인자를 넘겨서,
상황에 맞게 재사용할 수 있도록 checkEmailValue()를 재구성 하는 것도 좋을 것 같아요!
const checkEmailValue = (emailValue, checkIfValid) => {
const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
const isEmailValueEmpty = emailValue === "";
const isValidEmailPattern = emailPattern.test(emailValue);
if(checkIfValid) return !isEmailValueEmpty && isValidEmailPattern; --> 불리언 결과만 리턴 받고 싶은경우 checkIfValid 인자를 통해 여기서 불리언 값만 리턴
if (emailValue === "") {
setErrorFor(input, "이메일을 입력해주세요.");
return;
}
if (!emailPattern.test(emailValue)) {
setErrorFor(input, "잘못된 이메일 형식입니다.");
return;
}
setSuccessFor(input);
}
고생 많으셨어요, 윤주님! 아래 사항들을 고민해보고 연습해보면 차차 더 코드가 좋아질 것 같아요!
이외에 코드를 보며 몇가지 개선하면 좋을 점에 대해서 간단한 리뷰들 남겼습니다! +) 리뷰를 남긴 코멘트 위의 p(1~5); 마크의 의미는 아래와 같습니다! 참고하면 좋을 것 같아요!
|
넵!! |
판다마켓
사이트주소: https://pandamarket-momo.netlify.app/
요구사항
기본
로그인
회원가입
심화
스타일 관련
스크린샷
멘토에게