지난 주에 이어서 "코스 메이커" 프로젝트의 코드를 리팩토링 할 때 9장의 기술을 적용해 보기로 했다.
formatPhoneNumber
함수에서 매개변수 value
가 두가지 용도로 사용된다는 사실을 알게 됨export const formatPhoneNumber = (value: string) => {
value = value.replace(/\D/g, "");
if (value.length > 11) {
value = value.slice(0, 11);
}
const parts = [];
if (value.length > 3) {
parts.push(value.substring(0, 3));
if (value.length > 7) {
parts.push(value.substring(3, 7));
parts.push(value.substring(7));
} else {
parts.push(value.substring(3));
}
} else {
parts.push(value);
}
return parts.join("-");
};
value
는 다음 2가지 역할을 함export const formatPhoneNumber = (phoneNumber: string) => {
let formattedNumber = phoneNumber.replace(/\D/g, "");
if (formattedNumber.length > 11) {
formattedNumber = formattedNumber.slice(0, 11);
}
const parts = [];
if (formattedNumber.length > 3) {
parts.push(formattedNumber.substring(0, 3));
if (formattedNumber.length > 7) {
parts.push(formattedNumber.substring(3, 7));
parts.push(formattedNumber.substring(7));
} else {
parts.push(formattedNumber.substring(3));
}
} else {
parts.push(formattedNumber);
}
return parts.join("-");
};
value
매개변수를 phoneNumber
와 formattedNumber
로 분리해서 각 변수가 하나의 역할만 수행하도록 함phoneNumber
formattedNumber
this_title = (data.title !== undefined) ? data.title : data.name
과 같이 코드를 구성하여 바꾸기 전name
과 바꾼 후title
가 모두 적용되도록 조치하는 것을 잊지 말자