1️⃣ 변수(Variables)
- 의미있고 발음하기 쉬운 변수 이름을 사용
- 동일한 유형의 변수에 동일한 어휘를 사용
- 검색가능한 이름을 사용
- 의도를 나타내는 변수들을 사용
2️⃣ 함수(Functions)
- 함수 인자는 2개 이하가 이상적 (대부분 1개면 충분)
- 1개의 함수, 1개의 행동 ⭐️
- 함수명은 함수가 무엇을 하는지 알 수 있어야 함
- 함수는 단일 행동을 추상화
- 중복된 코드를 작성하지 말 것
- Object.assign을 사용해 기본 객체를 만들 것
- 매개변수로 플래그를 사용하지 말 것
- 사이드 이펙트를 피할 것 (변수, 함수 역할 분리)
- 전역함수 말 것 (prototype 연결 -> class 상속)
- 명령형 -> 함수형 프로그래밍
- 조건문은 캡슐화
- 부정조건문은 사용하지 말 것
- 조건문 작성은 피할 것 (if문 사용 -> 한 가지 이상의 일을 수행한다는 의미)
- 타입-체킹을 피할 것 (타입 체킹이 필요하면, TypeScript 도입할 것)
- 과도한 최적화를 피할 것
- 사용하지 않는 코드는 지울 것
3️⃣ 객체와 자료구조(Objects and Data Structures)
- getter와 setter를 사용
- 객체에 비공개 멤버 만들 것
4️⃣ 클래스(Classes)
- ES6 이상의 클래스 사용
- Method Chaining 사용
- 상속 < 조합
5️⃣ SOLID
- 단일 책임 원칙 (클래스는 공통된 개념에 맞게 나누기)
- 개방/폐쇄 원칙 (함수, 클래스, 모듈이 확장 가능하게 만들기, 수정은 어렵게 하기)
- 리스코프 치환 원칙 (하위 클래스가 교환 가능하게 하기)
- 인터페이스 분리 원칙 (의존성을 강제 받지 않도록 하기)
- 의존성 역전 원칙 (의존성은 외부에서 주입받게 하기)
6️⃣ 테스트(Testing) : 테스트가 없다는 것언 언제 오작동해도 이상하지 않다는 뜻
- 테스트는 최대한 쪼개서 실행할 것
7️⃣ 동시성(Concurrency)
- Callback -> Promise -> Async/Await
8️⃣ 에러 처리(Error Handling)
- 단순히 에러를 확인만 하지 말 것 (console.error, 에러 기록, 에러 리포팅 처리)
9️⃣ 포맷팅(Formatting)
- 일관된 convention & Formatting
- 함수 호출자와 함수 피호출자는 최대한 가깝게 위치
🔟 주석(Comments)
- 비즈니스 로직이 복잡한 경우에만 달 것 (좋은 코드는 코드 자체로 말함)
- 주석으로 된 코드는 남기지 말 것 (git으로 버전 관리가 됨)
- 코드 기록을 주석으로 남기지 말 것 (git log 사용하면 됨)
- 코드 위치를 설명하지 말 것
참고
https://github.com/qkraudghgh/clean-code-javascript-ko#clean-code-javascript
'Javascript > Basic' 카테고리의 다른 글
[코딩테스트] JadenCase 문자열 만들기 (0) | 2023.10.31 |
---|---|
[코딩테스트] 올바른 괄호 (0) | 2023.10.27 |
[코딩테스트] 최솟값의 곱 구하기 (0) | 2023.10.20 |
[JavaScript] day.js locale (key, name) - i18n (0) | 2023.01.31 |
[JavaScript] imgbb 이미지 업로드 api Post 코드 (0) | 2023.01.06 |
[JavaScript] ES6 알아야 할 기능 (0) | 2022.06.15 |
[코딩테스트/배열] Two Sum by LeetCode (0) | 2022.03.12 |
댓글