본문 바로가기

Book Review/Clean Code

[클린 코드] 5장. 형식 맞추기

1. 포맷팅이 중요한 이유

- 가독성에 필수적이다. 코드를 수월하게 읽어나갈 수 있고, 아마추어처럼 보이지 않는다. 포맷팅으로 인해 코드를 잘못해석해서 버그를 발생할 위험을 줄인다.

// 포맷팅이 맞지 않아 가독성 낮은 예시
public void horriblyFormattedMethod() {
    System.out.println("First line");
      System.out.println("Second line");
     System.out.println("Third line");
    for (int i = 0; i< 3; i++)
    System.out.println("number " + i);
}


// 가독성이 높은 코드
public void horriblyFormattedMethod() {
    System.out.println("First line");
    System.out.println("Second line");
    System.out.println("Third line");
    for (int i = 0; i< 3; i++) {
        System.out.println("number " + i);
    }
}

 

2. 클린코드 포맷팅

- 적절한 길이 유지 : 코드 길이는 200라인으로 제한하는 것을 권장한다. 현업에서도 200라인 정도를 유지한다. 코드길이가 200라인을 넘어간다면, 클래스가 여러가지 일을 하고 있을 수 있다. (SRP 위배)

- 밀접한 개념은 가까이 둔다 : 행 묶음은 완결된 생각 하나를 표현하기 때문에 이후에 빈 행으로 분리한다. 또, 변수는 사용되는 위치에서 최대한 가까이 선언한다.

 

3. Java Class Declarations

Class 내부 코드 순서를 맞추어 개발해야 한다. 

1) static 변수가 가장 상단에 있어야 한다. 같은 static 변수라면 public → protected → package → private 순서로 선언한다.

2) 그 다음은 instance 변수 : public → protected → package → private

3) 그 다음은 클래스의 생성자

4) 그 다음은 메서드 : 변수는 접근지정자를 기준으로 선언했다면, 메서드는 가독성 위주로 그룹핑한다. public 메서드에서 호출되는 private 메서드는 그(public) 아래에 둔다. (바로 읽고 이해하기 좋다.)

package java.blah;
import java.blah.blahdy.BlahBlah;

public class Blah extends SomeClass {

	public static int classVar1;
    
    private static Object classVar2;
    
    public Object instanceVar1;
    
    protected int instanceVar2;

	public Blah() {
    }
    
    public void doSomething() {
    }
    
    public void doSomethingElse(Object someParams) {
    }
}

 

4. Team Coding Convention

 팀의 코딩 스타일에 관한 약속이다. 개발 언어의 컨벤션이 우선이지만, 애매한 부분은 팀 컨벤션을 따른다. 없다면 제안하는 것도 리뷰 시 언쟁이 길어지지 않는 하나의 방법이다.

ex.

mySql 컨벤션 : 컬럼명은 snake_case 네이밍이 원칙

팀 컨벤션 : enum 타입으로 사용하는 varchar 타입인 경우, 컬럼명은 _type으로 끝나도록 네이밍한다.

 

5. 참고할 만한 컨벤션

Google Java Style Guide : https://google.github.io/styleguide/javaguide.html

 

Google Java Style Guide

1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein. Like ot

google.github.io

Naver Hackday Java Convention : https://naver.github.io/hackday-conventions-java/

 

캠퍼스 핵데이 Java 코딩 컨벤션

중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호

naver.github.io