<자바로 배우는 리팩토링 입문> 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를 사용하는 이유는 주석 대신에 사용하면서 개발서버의 에러를 잡을때 사용할 수 있을 것 같다.
'개발서적 > 자바로 배우는 리팩토링 입문' 카테고리의 다른 글
<자바로 배우는 리팩토링 입문> 13장~15장 (0) | 2021.03.23 |
---|---|
<자바로 배우는 리팩토링 입문> 10장~12장 (0) | 2021.03.21 |
<자바로 배우는 리팩토링 입문> 7장~9장 (0) | 2021.03.20 |
<자바로 배우는 리팩토링 입문> 4장~6장 (0) | 2021.03.16 |
블로그의 정보
57개월 BackEnd
BFine