자바/클린 코드

클린코드 5장 - 형식 맞추기

끄적끄적 2022. 5. 18. 22:03

형식을 맞추는 목적
오늘 구현한 기능은 다음 버전에서 바뀔 확률이 높다. 그런데, 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다.

적절한 행 길이를 유지하라
JUnit, FitNesse, testNG, Time and Money, JDepend, Ant, Tomcat 등 대규모 프로젝트 소스를 분석해서 보여주는데, 500줄을 넘어가는 파일이 거의 없으며 대다수가 200줄 미만이다. 500줄을 넘지 않고도 커다란 시스템을 구축할 수 있다는 것이다.

신문 기사처럼 작성하라
좋은 신문기사는 최상단에 기사를 몇마디로 요약하는 표제가 나온다. 첫 문단은 전체 기사 내용을 요약하며, 쭉 읽으며 내려가면 세세한 사실이 조금씩 드러난다. 소스파일도 위에서 아래로 추상적인 내용부터 아래로 내려갈수록 의도를 세세하게 묘사하는게 좋다. 마지막에 가장 저차원 함수와 세부내역이 나온다.

개념은 빈 행으로 분리하라
비슷한 개념들과 분리되는 개념일 때는 한줄을 띄워서 생각을 분리한다. 함수 사이 등에도 줄바꿈으로 생각을 분리하는게 좋다. 장황한 주석으로 비슷한 개념이 한눈에 들어오지 않는 것은 경계하라.

수직거리
서로 밀접한 개념은 위아래로 세로로 가까이 둬야 한다. protected 등을 통해 밀접한 개념이 다른 파일에 있으면 읽기 어렵다.  변수는 사용하는 위치에서 최대한 가까이 선언한다.

인스턴스 변수
클래스의 인스턴스 변수는 한 곳에 둔다.(자바의 경우 클래스 맨 처음에 선언한다)
잘 설계한 클래스는 클래스 메서드에서 인스턴스 변수를 사용한다. 그래서 앞부분에 선언하는게 좋다.

종속 함수
한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 가능하면 호출되는 함수를 호출하는 함수보다 뒤에 배치한다. 일반적으로 함수 호출을 아래방향으로 읽을 수 있으며, 소스코드가 자연스럽게 고차원 -> 저차원으로 내려간다. 첫 함수 몇개만 읽어도 개념을 파악하기 쉬워질 것이다.

개념적 유사성
비슷한 함수들(오버라이딩 함수 등)은 가까이 배치한다.

가로 형식 맞추기
한 행은 120자 이상 넘어가지 않도록 하는게 좋겠다. 할당 연산자 좌우, 인자들 사이에는 공백을 두어 나누어진 느낌을 주는게 좋다.

팀 규칙
좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄지고, 읽기 쉬운 문서는 스타일이 일관적이고 매끄러워야 한다. 팀의 코딩스타일을 정하고 IDE Fomatter로 지정하여 구현하자.

반응형