You will be fine

<자바로 배우는 리팩토링 입문> 1장~3장

by BFine
반응형

 항상 고민이 되는 깔끔한 코드에 대한 부분을 정리하기 위해 <자바로 배우는 리팩토링 입문> 이라는 책을 보고있다.

살짝 봤는데 가볍게 읽기에 좋은 책인 것 같다.  필요한 부분만 정리해야겠다. 

 

1장. 기호상수 치환

 a. 두 상수의 의존관계

  -  두상수의 의존 관계가 있다면 따로 쓰지말고 의존 관계를 표현하자!

public static final int MAX_INPUT_LENGTH = 100;
public static final int WORK_INPUT_LENGTH = 200; (X)
public static final int MAX_INPUT_LENGTH = MAX_INPUT_LENGTH*2;

 

2장. 제어플래그 삭제

 a. flag 

  -  가끔 코드를 작성하다보면 어떤 조건에 flag를 두어 true, false를 하는 경우가 있다. 특히 알고리즘에서

      많이 쓰는데 실제 서비스에 요런건 가독성이 떨어지니 주의하자

public class FindInt {
    public static boolean find(int[] data, int target) {
        boolean flag = false;
        for (int i = 0; i < data.length && !flag; i++) {
            if (data[i] == target) {
                flag = true;
            }
        }
        return flag;
    }
}

 

 b. break나 return을 쓰면 가동성이 좋아진다.

  -  여기에 추가로 continue 키워드를 쓰는데 왜인지 모르겠지만 나는 뭔지모르는 거부감이 있었다;; 

  -  키워드를 사용할 수 있다면 불필요한 flag성 필드는 제거하자

 

 c. 플래그명

  -  flag를 써야한다면 flag명을 의미를 알아내기 쉬운 이름을 쓰자!

     => ex) initialize, recurse(재귀 메서드 제어) 등등  

 

 d. boolean 이외의 플래그

  -  Object 형태의 플래그를 사용하는 경우도 있다.

class Something{
  private final Object _value;
  
  public Something(Object value){
  	  _value = value; 
  }
       . . .
}

  -  이렇게 쓰는거는 본적이 없다. 책에서는 이런코드가 꼭 나쁜것은 아니라고 나와있는데 좋아보이지는 않는다.

  -  혹시 써야할 일이 있다면 예문처럼 필드앞에 _를 사용하고 final 형태로 사용해야겠다.

 

3장. 어서션 도입 

 a. 주석대신 사용하자

  -  프로그래머의 의도를 확실히 밝히면서도 실행시 조건이 반드시 성립함을 보장한다.

  -  프로그램의 에러를 빨리 발견하는 방법이다. 어서션 조건이 false 일 경우 AssertionError가 발생한다. 

  -  어서션의 조건은 비파괴 검사여야한다.

assert value > 0;
assert isSorted(0, x+1); // 메서드 호출가능 

 

 b. 실행

  -  java 명령어 기본값은 어서션 비활성화이므로 -ea 옵션을 추가해야한다.

 

 c. 문법

  -  두가지가 문법이 존재한다.

       1. assert expr;

       2. assert expr: option;  

assert expr: option;

if(!expr){
	throw new AssertionError(option);
}

-  expr은 boolean 표현식이고 option을 가질 수 있다.

-  주의 assert문은 예외처리 대신에 사용할수 없다!!

     => assert를 사용하는 이유는 주석 대신에 사용하면서 개발서버의 에러를 잡을때 사용할 수 있을 것 같다.

 

출처 : www.gilbut.co.kr/book/view?bookcode=BN001847

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기