1. 클린 코드(Clean Code)란 ?
"Clean code does one thing well.”
클린 코드는 하나의 일을 잘 하는 코드이다.
- Bjarne Stroustrup, inventor of ‘C++
“Clean code is simple and direct."
클린 코드는 간결하며, 직접적이다.
- Grady Booch, author of ‘Object-Oriented Analysis and Design with Applications’
저명한 개발자들이 정의한 클린코드란 단순하여 읽기 쉽고, 각 역할마다 주어진 하나의 일만 담당하며, 복잡하거나 모호하지 않은 코드입니다.
즉, 원하는 로직을 빠르게 찾을 수 있는 코드, 모든 팀원이 이해하기 쉽도록 작성된 '가독성'이 좋은 코드 입니다.
2. 왜 클린 코드를 배워야 하는가
많은 개발자들이 클린코드를 위해 명확하고 일관적인 네이밍, 중복 줄이기, 가독성 높이기 등을 실천하고 있습니다. 그렇다면 왜 클린코드를 해야하는걸까요?
왜냐하면 클린 코드는 코드 파악, 코드 리뷰와 디버깅 시간을 단축시키기 때문입니다.
3. 클린 코드의 주요 원칙 5가지
- 코딩 표준, 아키텍쳐 표준 및 설계 가이드를 준수해야 한다.
- 단순한 것이 효율적이며, 복잡함을 최소화해야 한다.
- 자신이 담당한 코드는 담당하기 이전의 코드보다 더 클린하게 만들어야한다.(Boy Scout Rule)
- 항상 근본적인 원인을 찾아야한다. 그렇지 않으면 반복될 것이다.
- 하나의 파일은 하나의 언어로 작성한다.
4. 클린 코드를 작성하는 방법
public class Account {
//
private int amount;
public static int transferMoney(int money){
amount -= money;
};
}
Account.transferMoney(1000);
- UML을 통해 필요한 요소와 기능을 명확하게 적시하고 나서 개발을 시작하자.
- 특정한 동작을 수행하는 함수는 동사로, 클래스나 속성은 명사로 짓는다.(위 코드 참조)
- 변수명은 무엇을 위한 값인지 분명히 나타낼 수 있어야 한다.(ex. amount(O), am(X))
- 여러가지 네이밍 규칙들을 클래스, 함수, 변수, DB, 컬럼 등에 맞게 Camel, Pacal, kebab, snake를 따져서 작성하자. ⭐️
- 함수 작성 요령
1. 하나의 함수는 하나의 일만 수행하는 것이 좋다. 만약에 하나의 함수에 여러 가지 일을 처리한다면, 기능 별로 분리하자.(단일 책임의 원칙, 가독성과 재사용성 👍🏻)
2. 함수의 인자 개수를 최소화한다.(함수에 전달되는 인수는 적을수록 좋다. 많아도 3개 까지만 작성하고 3개는 넘어간다면 하나의 객체로 묶어서 전달할 수 있도록 하자.)
3. 함수의 길이 또한 작을수록 좋다. 함수의 이름을 구분짓기 위해서 길게 쓰다보면, 함수 자체를 이해하기 어려워 질 수 있고, 오탈자 등의 문제로 인한 오류가 발생할 수 있다.
4. 함수는 명령과 조회를 분리해야 한다.(ex. ‘get(Getter, fetch, localStorage, getItem)’ 과 ‘generator(new Date(), createElement)’)
- 주석을 최소화하자.
- 잘못된 코드는 빠르게 수정되지만, 잘못된 주석은 잘 수정되지 않는다.
- Todo, 제한사항 등 코드로 설명할 수 없는 부분만 주석으로 설명하고, 가능하면 코드 자체가 스스로 설명할 수 있게끔(Self-Descriptive) 작성한다.
- null을 리턴하거나 인수로 받지 말자.
- 코드의 일관성을 지키기 위한 규칙을 정하고, 어떠한 경우에도 깨지 않도록 노력한다. ⭐️
'개발 상식 🥕' 카테고리의 다른 글
[면접을 위한 CS 전공지식 노트] 1-2 프로그래밍 패러다임 (0) | 2023.11.26 |
---|---|
[면접을 위한 CS 전공지식 노트] 1-1 디자인 패턴 (0) | 2023.11.26 |
[WEB] CORS와 SOP의 개념 및 CORS 에러 해결방법 (0) | 2023.08.18 |
빌드(Build) / 배포(Deploy) / 컴파일(Compile) / 링크(Link) 개념 및 차이점 (0) | 2023.08.12 |
클라이언트 사이드 렌더링(CSR) / 서버 사이드 렌더링(SSR) / 정적 사이트 생성(SSG) 비교 및 장단점 정리 (0) | 2023.08.12 |