Javascript/Basic

[JavaScript] 클린 코드 요약

yoonjong Park 2023. 12. 2.

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

댓글