1. 네이밍을 할 때는 축약형을 지양하자
네이밍을 할 때 대부분의 사람들에게 축약된 단어가 더 익숙한 경우를 제외하고는 줄여 쓰지 않는다. 좋은 코드는 짧은 코드가 아닌, 읽기 좋은 코드이다. 미래의 나와 다른 개발자를 위해 작성한다고 생각하고 네이밍을 하자.
2. 재사용을 고려하자
static randomValue() {
return Math.floor(
Math.random() * (UTIL_NUMBER.CAR_RANDOM_MAXIMUM_NUMBER + 1)
);
}
위 함수는 랜덤 한 값을 뽑아낸다. 그러나 UTIL_NUMBER.CAR_RANDOM_MAXIMUM_NUMBER라는 도메인 정보를 알고 있어 사실상 정해진 범위(여기서는 MAXIMUM_NUMBER인 9)의 랜덤 값을 뽑아내는 것을 알 수 있다. 함수의 재사용을 고려해 함수 외부에서 랜덤 값의 범위를 파라미터로 받아오자.
3. 비구조화를 활용하자
// 이 방식보다는
const maxObjects = [...map.entries()].filter((obj) => obj[1] === maxValue);
// 이렇게 작성
const maxObjects = [...map.entries()].filter(([_, value]) => value === maxValue);
인덱스 값을 이용해 접근하는 것은 한 번에 이해하기 어렵다. 비구조화를 활용해 명시적인 네이밍을 붙여주자.
4. 상수 추출
상수 추출은 너무 과다하게 하지 않아도 된다. 다음의 경우에 상수 추출을 권장한다.
- 리터럴 자체 만으로는 의미를 추론하기 힘들 때
- 서로 다른 영역에서 재사용 가능성이 있어 수정시 휴먼 에러 발생 가능성이 있을 때
5. toBe와 toEqual
- toBe는 값이 같은지, 객체도 같은지 비교한다.
- toEqual은 값이 같은지만 비교한다.
- toBe의 경우 객체를 비교할 때 내용이 같더라도, 서로 다른 메모리에 있는 객체이기 때문에 false
6. 함수의 추상화 정도를 일관된 흐름으로 작성하자
어떤 함수가 어떤 함수를 사용하는지 순서가 일관되지 않으면 읽는 입장에서 계속 찾아가며 추론해야 하는 어려움이 있다. 따라서 하나의 파일 안에서 일관된 흐름으로 작성하는 것이 좋다.
7. 유효성 검사를 하고 가공하자
변수를 초기화하거나 set하는 경우, 그전에 유효성 검사를 하고 가공하자. 특히 사용자의 입력이 들어오는 메서드의 경우 입력값을 예상할 수 없기에 꼼꼼히 검사해야 한다.
'우아한 테크코스' 카테고리의 다른 글
레벨1 - 점심 뭐 먹지 피드백 (0) | 2023.04.03 |
---|---|
레벨1 - 로또 게임 피드백 (0) | 2023.04.03 |
비동기 퀴즈 (0) | 2023.03.20 |
HTML의 자식 요소 제거 방식 (0) | 2023.03.20 |
innerText와 textContent의 차이 (0) | 2023.03.20 |
댓글