티스토리 뷰

내가 생각하는 클린코드란 무엇인가?

클린코드는 가독성이 높은 코드이다.

클린코드는 네이밍이 잘 되어야한다.

클린코드는 오류가 없는 코드이다.

클린코드는 중복이없다.

클린코드는 의존성을 최대한 줄여야한다.

클린코드는 클래스, 메소드가 한 가지 일만 처리해야한다.


이런 많은 글 중에 틀린말은 하나도 없다. 당신도 클린 코드를 이렇게 생각하는가? 다른 생각이있는가?

지금부터 이 글의 설명과 이유를 설명하겠다.

클린코드는 딱히 정의된 용어는 아니다. 하지만, 프로그래머라면 한번쯤은 생각해 봤을 만한 용어라고 생각한다. 이런 용어를 보면서 프로그래머는 당연히 관심을 가져야 한다. 

가독성, 얼마나 글이 잘 읽혀 나가는가? 이를 위해서는 코드가 지저분하지않고 정리된 코드여야한다. 

public int AAA(int a, int b){
    return a+b;
}
public int BBB(int a, int b){
    return a-b;
}


위 코드는 더러운 코드이다. 이유를 알겠는가?
위 코드에서 내용을 들여다 보기 전까지 해당 메소드가 하는 기능을 알 수 없다.
위 예시는 상당히 간단한 예를 설명했기에 "뭐 이렇게 해도 상관없을꺼 같은데??" 라고 생각할 수 있다. 하지만 굉장히 복잡한 함수라면 어떻게 할텐가? 그 내용을 하나하나 분석하고 있을텐가?

public int sum(int a, int b){
    return a+b;
}

public int sub(int a, int b){
    return a-b;
}


이전 코드와 큰 차이가 없는가? 첫째, 함수명이 바뀌었다. 즉 네이밍의 중요성을 보여준다. 이런 방법으로 코드분석 필요없이 이름만 보고 그 내용을 파악할 수 있다. 둘째, 함수와 함수 사이의 간격이 띄어저있다. 왜그럴까? 함수가 많은 클래스에서 개행으로 함수의 구분을 한다면 보다 쉽게 읽을 수 있을 것이다.

중복성, 코드의 중복을 없애라. 왜 중복이 있으면 안되는가? 이에 대한 궁금증은 없을 것이라고 생각한다. 코드의 중복 없이 같은 기능을 하는 프로젝트가 있다면 훨씬 깨끗해 보이고, 쉽게 다가올것이다. 또한, 그 부분의 대해 에러가 발생하거나, 변경할 일이 있을때, 그 코드가 적용된 모든 클래스, 메소드의 코드를 변경할 것인가? 이런 중복을 없애기 위한 방법으로는 무엇이 있을까? 이런 중복을 없애기 위한 방법으로 하나 제시하자면, 메소드나 클래스에 한 가지 기능을 넣어야한다. 여러기능을 넣는다면, 다른 코드에서 그 기능이 필요하다면 그 기능을 다시 작성하게 될 것이다.  반대로 한가지 기능을 넣는다면 기능이 필요하다면 원하는 코드를 호출만 하면 될 것이다.



Clean Code: A Handbook of Agile Software Craftsmanship를 읽고...


'Paradigm > CleanCode' 카테고리의 다른 글

주석을 쓰는 것이 좋은가?  (0) 2013.04.13
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday