정의
읽기 쉽고 이해하기 쉬우며, 유지보수가 쉬운 코드
단순히 작동하는 코드를 넘어서서, 다른 개발자들이 쉽게 이해하고 수정할 수 있는 코드
클린 코드는 코드 품질을 높이고 버그를 줄이며, 향후 개발에 드는 비용을 절감하는 데 중요한 역할을 함
특징
1. 가독성
- 코드는 항상 읽히기 쉽게 작성해야 함. -> 팀원들이 쉽게 이해하고 수정할 수 있어 협업에 유리
- 변수명, 함수명, 클래스명 등은 명확하게 의미를 담아야 하며, 모호한 표현은 피함
2. 단순성
- 복잡하지 않고, 문제를 해결하는 가장 간단한 방법을 택하는 것이 중요
- 불필요한 코드를 피하고, 하나의 함수는 하나의 책임만 가지도록 작게 나눔
3. 함수와 클래스의 적절한 크기
- 함수는 가능한 한 짧고, 하나의 작업만 수행해야 함
- 클래스도 단일 책임 원칙(SRP)을 지키며, 하나의 목적을 위해 존재함
4. 명확한 네이밍
- 이름은 코드의 기능을 설명할 수 있는 직관적인 이름을 사용해야 함
- 축약어를 피하고, 기능을 나타내는 명사나 동사 등으로 구성
5. 주석 최소화
- 주석이 없어도 코드가 자체적으로 명확하게 읽히도록 작성
- 코드가 직관적이라면 주석이 거의 필요 없음. 로직이 복잡한 경우에만 필요한 주석을 간결하게 추가
6. 에러 처리
- 예외 상황을 적절하게 처리해야 하며, 코드가 예상치 못한 상황에서도 안정적으로 동작하도록 작성
7. 테스트 가능성
- 코드가 변경되거나 추가될 때 쉽게 테스트할 수 있도록 작성
- 코드의 의존성을 최소화하고, 유닛 테스트와 같은 테스트 코드도 함께 작성하는 것이 좋음
예시
// 클린 코드 이전
public class User {
private String n;
private int a;
public void fn(String n, int a) {
this.n = n;
this.a = a;
}
}
// 클린 코드 적용 후
public class User {
private String name;
private int age;
public void updateUserInfo(String name, int age) {
this.name = name;
this.age = age;
}
}
비고
1. 앞에 공부한 객체지향생활체조원칙이랑 비슷한 느낌! 난 이제까지 클린 코드가 안 되었구나, 신경 써가며 개발해야겠다.
레퍼런스
1. 우테코 프리코스 백엔드 자료, 도서관