
# JavaScript課題25
# JavaScript課題25
塾生が書いてくれたコード
レビュー時に他の塾生同士で議論になっていた
「どこまで共通化するか」
個人的に自分が思うには
共通化も考える一方で共通化をしないことも考えること
だと思いました
以下は塾生の書いたコードの一部を修正したのですが、
どうでしょうか、
元のコードは80行目以降あたりはこんな感じでした
let validateTerms = {
userNameMaxCount: 15,
emailRegex: new RegExp(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\.[A-Za-z0-9]{1,}$/),
passwordRegex: new RegExp(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,}$/),
};
const errorMessages = {
userName: “ユーザー名は15文字以下にしてください。”,
email: “メールアドレスの形式になっていません。”,
password: “8文字以上の大小の英数字を交ぜたものにしてください。”,
};
const isValid = (key) => {
switch (key) {
case “userName”:
return form[key].value.length <= validateTerms.userNameMaxCount;
case “email”:
return validateTerms.emailRegex.test(form[key].value);
case “password”:
return validateTerms.passwordRegex.test(form[key].value);
default:
return;
}
};
な感じでした
そもそも自分だったら部品毎にバリデーションは分けることを伝えました
関心毎に分ける。
この場合はinputのpassword、name, email毎に仕事は分けつつ、共通化する