반응형
안녕하세요? 수구리입니다.
이번 포스팅에서는 클린 코딩을 하는 8가지 방법과 간단한 예시들을 통해서 알아보겠습니다.
클린 코딩이 필요한 이유?
- 좋은 품질의 코드는 이해하기 쉽고 명확함.
- 또한 수정하기 쉬우며 확장하기가 쉽다.
- 따라서, 클린 코딩이 필요하다!
1. Naming Convention
- 개발자들 사이에서 공통적인 관습이 있다.
- 자바에서 변수 및 클래스의 이름 짓는 예시를 살펴보자.
class UserService {
private String firstName;
public String getFirstName() {
return firstName;
}
}
- 모든 변수나 함수 클래스들은 CamelCase 스타일로 한다.
- 변수와 클래스의 차이점은 위의 예시에서 볼 수 있듯이 클래스는 첫 자가 대문자이다.
CamelCase 스타일?
- 간단하게 코딩 하는 스타일 문법이다.
- 변수를 지정할 때, 여러 단어가 합쳐지는데 이때 각 단어 첫 번째 글자를 대문자로 만드는 방법이다.
위에서 이름과 관련한 변수를 firstName이라고 하였다. 이는 first와 name이라는 두 단어가 합쳐지게 되면서 CamelCase 스타일에 따라 두 번째 단어부터 대문자로 만들어 주어서 변수 이름이 결정되는 것이다.
- 상수는 전부 대문자에 언더스코어로 띄어쓰기를 표현하자
final int MAX_COUNT = 1000;
- 특수 기호 또는 변수에 숫자를 쓰는 것을 피하자
// bad example
User user1 = new User();
User user2$ = new User();
- 너무 긴 글자를 변수 또는 메소드명에 쓰지 말 것.
- 가능하면 심플하게 정보를 담자
// bad example
public void saveUserIntoMongoDBDatabase(User user);
// much better example
public void saveUser(User user);
- 함수는 어떤 특정한 동작을 수행하기 때문에 동사로 짓고,
- 클래스나 속성의 이름은 명사로 지어보자
2. 의미하는 바를 명확하게 적어라
- 변수를 만들 때, full name을 적는 것을 귀찮아하지 말자
- 변수는 어떤 것을 위한 값인지를 나타내야 한다.
- 시간이 지나서 다시 그 변수를 보게 된다면, 해당 변수의 의미를 잊기 마련이다.
public boolean check() {
if (a < max) {
return true;
} else {
return false;
}
}
- 위의 예시를 아래와 같이 보다 명확하게 수정해보자
public boolean isAgeAcceptable() {
if (userAge < maxAge) {
return true;
} else {
return false;
}
}
3. 변수와 메서드의 선언
- 모든 클래스의 변수들은 클래스의 맨 위에 선언되어야 한다.
- 그러면 변수들을 찾을 위치를 언제든지 알 수 있게 될 것이다.
- 만약 변수가 한 개만 쓰인 메서드에서만 쓰인다면 로컬 변수로 선언해서 사용하도록 한다.
- 메서드들은 쓰이는 순서대로 선언되어야 한다. (위에서 아래로)
- 예로 현재 메서드에서 다른 메서드를 호출한다면, 메서드는 현재 메서드의 아래에서 선언되어야 한다.
- 마지막으로 중요도에 따라서 중요할수록 위쪽에, 덜 중요한 것은 아래쪽에 두자.
4. 한 가지 관련 있는 기능
- 한 메서드는 하나의 동작에만 관련이 있어야 한다.
- 만약 한 메서드에 다른 것들을 동시에 처리를 한다면, 기능적으로 다른 메소드들로 나눌 것을 고려해야 한다.
- 1 메서드 1 기능으로 만들어준다면, 더 이해하기 쉽고 다른 메소드에서 재사용하기도 편리하다.
5. 작은 메소드
- 대게 개발자들 사이에서 좋은 메서드라고 불리는 기준은 5 ~ 10줄로 여겨진다고 한다.
- 그렇지만 이 부분에 있어서 명확한 정답은 없으므로 조금 길더라도 이해하기 좋고 고퀄리티로 만들자.
6. 코드의 최소화
- 만약 한 줄로 끝낼 수 있다면 코드를 굳이 3줄로 풀어서 쓰지 말자.
- 코드 블록을 추가하기 전에 항상 최상의 접근법을 생각하고 적용할 필요가 있다.
7. 중복은 악이다
- 코드의 중복을 최대한 피하자!
- 만약 다른 곳에서 메서드를 재사용할 수 없다면 잘못된 것이고, 그 메소드를 재사용할 더 좋은 방법을 생각해보아야 한다.
- 메서드는 가능하면 최대한 넓게 쓰여야 한다.
- 예를 들어 거의 비슷한 기능을 하는 두 함수가 있다고 하자. 단지 1줄의 코드만 다르다면 같은 기능을 추출해서 하나로 만들어주고, 두 개를 연결해서 다른 조건 체크를 만들어 주는 것이 낫다.
8. 코멘트(주석)
- 복잡한 알고리즘이나, 코멘트가 다른 개발자들의 이해에 도움이 된다면 코멘트를 남기는 것은 좋다.
- 매우 짧은 코드가 아닌 이상 클래스의 설명이나 메서드의 설명 등은 짧게 짧게 써주는 것도 좋아 보인다.
결론
- 프로젝트를 진행하다 보면 원하는 대로 동작은 잘 하지만, 다양한 부분에서 문제가 충분히 일어날 수 있다.
- 그럴 때는 내가 클린 코딩 원칙을 잘 지키면서 진행을 해왔는지, 다른 놓친 부분은 없는지 점검을 해야 하는 신호일 수도 있다고 생각한다.
- 따라서 클린 코딩은 개발자라면 항상 고려해야 하는 부분인 것 같다.
반응형
'🌈 프로그래밍' 카테고리의 다른 글
[ node/express ] 외부 API post 요청 시 json Array 객체를 포함해서 전송하기 (0) | 2022.11.18 |
---|---|
[ dbdiagram.io ] CLI 명령으로 DDL DB Diagram 쉽게 뽑기 (0) | 2022.06.09 |
[ Code Refactoring ] 코드 리팩토링에 대해서 알아보자 (0) | 2021.11.10 |