개발 상식

[Clean Code] 클린코드 이론 정리

킹우현 2023. 11. 20. 17:38

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가지

  1. 코딩 표준, 아키텍쳐 표준 및 설계 가이드를 준수해야 한다.
  2. 단순한 것이 효율적이며, 복잡함을 최소화해야 한다.
  3. 자신이 담당한 코드는 담당하기 이전의 코드보다 더 클린하게 만들어야한다.(Boy Scout Rule)
  4. 항상 근본적인 원인을 찾아야한다. 그렇지 않으면 반복될 것이다.
  5. 하나의 파일은 하나의 언어로 작성한다.

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을 리턴하거나 인수로 받지 말자.
  • 코드의 일관성을 지키기 위한 규칙을 정하고, 어떠한 경우에도 깨지 않도록 노력한다. ⭐️