클린 코드[Clean Code] TIL #6. 형식 맞추기

DAY 6 - 22/05/02
오늘 읽은 범위 : 5장. 형식 맞추기

책에서 기억하고 싶은 내용
  • 세로 밀집도( p.100 )
    • 서로 밀접한 코드 행은 세로로 가까이 놓아야 한다.
    • 종속 함수. 한 함수가 다른 함수를 호출한다면, 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다.( p. 104 )
  • 가로 공백과 밀집도( p. 108 )
    • 가로로는 공백을 이용해 밀접한 개념과 느슨한 개념을 표현한다.
    • 함수와 인수는 서로 밀접하므로, 이어지는 괄호 사이에는 공백을 넣지 않았다.
    • 승수 사이에는 공백이 없다. 곱셈이 우선순위가 가장 높기 때문이다. 항 사이에는 공백이 들어간다.
    • 정렬이 필요할 정도로 목록이 길다면 문제는 목록의 길이지 정렬 부족이 아니다. 선언부가 길다면 클래스를 쪼개야 한다는 의미다.( p. 110 )
  • 팀 규칙
    • 팀에 속한다면 자신이 선호해야 할 규칙은 팀 규칙이다.

오늘 읽은 소감? 떠오르는 생각

해당 장에서는 코드의 형식을 잘 작성하는 법에 대해서 말해준다.
세로로 코드를 어떻게 배치할 것인지, 어떤 코드들을 서로 묶어서 표현할 것인지 등등 코드의 형식에 대한 이야기를 주로 하고 있다.
 
맘편하게 읽을 수 있었던 장이었다.
읽으면서 가로 공백에 대해 생각이 들었다. 나는 메서드를 작성할 때 괄호와 인수 사이에 공백을 하나 넣는다.
 
그렇게 해야 내가 인수를 보기 편하기 때문이었다. 그 공백이 연관관계를 표현한다고 하니 앞으로는 공백은 인수 사이에만 띄워야 겠다고 생각이 들었다.
 
 

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

구글 자바 스타일 문서를 확인해보니 매개변수가 있는 메서드를 특별하게 예시로 들어주지는 않았다.

Horizontal Whitespace( 가로 공백 ) 이 사용되는 예시들은 다음과 같다.

 

1. if, for, 혹은 catch와 같은 예약어는 해당 줄에서 뒤에 오는 여는 괄호 '('에서 띄운다.

2. else, catch와 같은 예약어를 해당 줄에서 앞에 오는 닫는 중괄호 '}'에서 띄운다.

3. 중괄호 '{'를 여는데에 두 가지 예외가 존재한다.

    3-1. @SomeAnnotation({a, b}) - 어노테이션에 공백이 사용되지 않는다.

    3-2. String [][] x = {{"foo"}} - 아래 9번 항목에 따라서, 공백이 필요하지 않음

4. 이항 혹은 삼항 연산자의 양쪽에 적용된다. 아래와 같은 "연산자 같은" 심벌에도 사용이 된다.

    4-1. 결합형 타입 범위의 & : <T extends Foo & Bar>

    4-2. 여러 예외를 처리하는 catch 블록 내의 파이프 : catch(FooException | BarException e)

    4-3. 향상된 For문에서의 콜론(:)

    4-4. 람다식에서의 화살표: (String str) -> str.length()

하지만, 메서드 참조를 의미하는 두 개의 콜론(::)은 공백 없이 Object::toString과 같이 사용된다.

또한 점 구분자 '.' 은 object.toString()과 같이 사용된다.

5. .:; 혹은 캐스팅에서 닫는 괄호 ')' 

6. 주석의 시작을 의미하는 //와 특정 내용 사이에 존재 가능하다. 여러 개의 공백도 허용된다.

7. 주석의 시작을 의미하는 //와 주석 텍스트 사이에 존재 가능하다. 여러 개의 공백도 허용된다.

8. 선언 타입 유형과 변수 명 사이: List <String> list

9. 배열 초기화 시 중괄호 사이는 선택 가능하다. new int []{5, 6}과 new int[] { 5, 6 } 모두 사용 가능하다.

10. 타입 어노테이션과 [] 혹은... 사이

 

위 규칙들은 줄의 시작이나 끝에 추가 공간을 필요로 한다거나, 금지하는 내용으로 해석하지 않는다.

오직 내부 공간만 다룬다.


궁금하거나, 잘 이해되지 않는 내용

- 없음