클린 코드를 간단하게 한 문장으로 정리한다면 ?
사람들은 만드는데에도 귀찮고 생각하기도 귀찮은 클린코드를 왜 쓸까?
그 이유는 시간이 지나도 생산성이 유지되고 장기적으로 관리 비용이 낮아서라고 말할 수 있다.
간단하게 말하자면 코드를 읽으며 짐작했던 기능을 각 루틴이 그대로 수행하면 클린 코드이다.
한번 지저분해진 곳은 계속 더욱 더 지저분 해진다는 깨진 유리창 이론이라는 이론이 있다. 이 처럼 코드도 기능만 제대로 돌아간다고 안일하게 짜다가는 걷잡을 수 없이 난잡한 코드가 될것이다.
이를 방지하기 위해서는 처음부터 코드를 클린하게 짜는 클린 코드의 방식을 따르는 것이 효율적일 것이다.
이해를 위한 시간을 최소화 시키기
클린 코드의 방식을 적어보자면 다음과 같이 적을 수 있었다.
여기있는 방식을 통해서 주어진 치킨집의 정보를 클린 코드 스럽게 작성해보면 다음과 같이 만들 수 있다.
치킨집
매장이름 : String
매장오픈일 : Date
사장님 이름 : String
매장정보출력() : void
주문접수() : void
주문거절() : void
public class chickenRestaurant{
private String name;
private Date openDate;
private String ownerName;
//대충 생성자
//대충 getter,setter
@Override
public void toString();
public void acceptOrder();
public void rejectOrder();
}
메소드 작성법이라고 거창하게 말해봤자 사실 메소드 작성법에서 가장 중요한 것은 메소드 추출(*매우 중요)이다.
예를 들어 if/else문 안에 로직은 가능한 메소드로 추출하여 구현하는 것이 좋다라는 게 메소드 추출이라고 할 수 있다. 또한 if/else문을 쓸 때 비교 기준이 뒤에 있는게 매끄럽고 보는 사람도 이해하기에 편리하다고 생각했다.
이와 반대로 do-while은 읽는 사람이 코드를 2번 읽게되는, 번거로운 작업을 하게 되어서 조건을 눈에 보이는 곳에 미리 보여 주는 for문 형식으로 쓰는게 좋다고 생각한다.
쇼트 서킷( Short Circuit )
영리하게 작성된 복잡한 코드 ( 3줄 코드를 1줄로 줄인다던가 ) 가 다른 사람들이 이해 하는 데에는 힘들다는 방식이다. 이를 막기 위해서는 간단한 코드를 위해서 모든 기능을 압축하기 보다는 모든 메소드는 하나의 기능만 담당하도록 처리하는 것이 좋을 것 같다. ( 값을 설정, 조회, 삭제 … )
얼리 리턴 ( Early Return )
더 이상 로직을 실행할 필요가 없을 때 return을 호출하여 메소드를 바로 종료하는 것이다. 메소드는 는 실행될 때 메모리에 올라가고 return 하고 종료할때 내려가기 떄문에 성능적으로 빨라진다는 장점이 있다.
추가적으로 생각해 본다면 반환을 제일 끝에 하게 된다면 어디서 어떤 조건이 이런 에러 반환 값을 넣어 놨는지 찾아내기가 힘들어진다는 단점도 있다. (로직 역추적 불가능)
클린 코드를 배우며 어떻게든 기능만 완성시키려고 했던 기존의 방법이 클린 코드의 작성 방법을 대다수를 무시했다는 것을 알 수 있었다. 중구난방으로 작성한 메소드와 메소드마다 달아놓은 주석과 같이 내가 보기에 편하고 만들기 편한식으로만 작업했던 것이다.
추후 협업이나 배포를 통해 다른 사람들에게도 코드를 보여줄 일이 많을 텐데 이런일 들을 대비하여 클린 코드 작성방법을 지금부터라도 코드를 작성할때마다 계속 리마인드 하여 손에 좀 익게 작업해야겠다.
처음부터 완벽한 소스 코드를 작성하는 사람은 아무도 없다.

그래도 이렇게 짜지는 말자