Sky Archive

교육/Clean Code

[Clean Code] 클린 코드 'Chapter 5. 형식 맞추기' 핵심 내용 및 정리

Anchovy ʕ-᷅ᴥ-᷄ʔ 2022. 12. 28. 10:05

- 도서 목차

Chapter 1. 깨끗한 코드
Chapter 2. 의미 있는 이름

Chapter 3. 함수

Chapter 4. 주석

 

Chapter 5. 형식 맞추기

(p95 ~ 116)

 

Chapter 6. 객체와 자료 구조

Chapter 7. 오류 처리

Chapter 8. 경계

Chapter 9. 단위 테스트

Chapter 10. 클래스

Chapter 11. 시스템

Chapter 12. 창발성

Chapter 13. 동시성

Chapter 14. 점진적인 개선

Chapter 15. JUnit 들여다보기

Chapter 16. SerialDate 리팩터링

Chapter 17. 냄새와 휴리스틱

 

- 강의 목차

코드의 가독성에 필수적인 포맷팅

01 포맷팅이 중요한 이유
02 클린코드 포맷팅
03 Java Class Declarations
04 Team Coding Convention

 

01 포맷팅이 중요한 이유

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

 

02 클린코드 포맷팅

- 적절한 길이 유지

반드시는 아니지만 일반적으로 200라인 이하로 작성.
• 큰 파일보다는 작은 파일이 이해하기 쉽다.
• 코드길이가 200라인을 넘어간다면, 클래스가 여러 개의 일을 하고 있을 수 있다. SRP 위배됨.

 

- 밀접한 개념은 가까이

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

 

03 Java Class Declarations

Class 내부코드 순서
1. static 변수
public → protected  package  private
2. instance 변수

public → protected  package  private
3. 생성자
4. 메서드
public 메서드에서 호출되는 private 메서드(종속 함수)는 그 아래에 위치 : 가독성위주의 그룹핑

 

https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html#1852

 

/*
 * @(#)Blah.java        1.82 99/03/18
 *
 * Copyright (c) 1994-1999 Sun Microsystems, Inc.
 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of Sun
 * Microsystems, Inc. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Sun.
 */

package java.blah;

import java.blah.blahdy.BlahBlah;

/**
 * Class description goes here.
 *
 * @version 1.82 18 Mar 1999
 * @author Firstname Lastname
 */
public class Blah extends SomeClass {
    /** classVar1 documentation comment */
    public static int classVar1;

    /** 
     * classVar2 documentation comment that happens to be
     * more than one line long
     */
    private static Object classVar2;

    /** instanceVar1 documentation comment */
    public Object instanceVar1;

    /** instanceVar2 documentation comment */
    protected int instanceVar2;

    /** instanceVar3 documentation comment */
    private Object[] instanceVar3;

    public Blah() {
        // ...implementation goes here...
    }

    public void doSomething() {
        // ...implementation goes here...
    }

    public void doSomethingElse(Object someParam) {
        // ...implementation goes here...
    }
}

 

03 Team Coding Convention

개발언어의 컨벤션이 우선이지만, 애매한 부분은 팀 컨벤션을 따른다.

 

ex.

MySQL Convention
컬럼명은 snake_case로 네이밍 한다.

 

Team Convention
enum 타입으로 사용하는 varchar 타입의 경우 컬럼명은 _type로 끝나도록 네이밍 한다.

 

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

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