[Java Refactoring] 리팩토링 목록

728x90
반응형
SMALL

자바로 배우는 리팩토링 입문

  • Java Refactoring For Beginner
  • 건강한 코드로 소프트웨어 체질을 개선하자!
  • 유키 히로시 지금
  • 길벗 출판사
  • 2017.10.31

 

리팩토링을 위한 스터디 내용을 정리하자.

 

 

 

 


책의 모든 챕터를 정리하려 했는데, 2017년 출판이라 그런 건지.... 내가 못 느끼는 건지.. 뭔가 와 닿지 않아서 간단하게 한 번에 정리했다.

 

매직 넘버를 기호 상수로 치환

// Before
if (100 < input.length()) {}

// After
public static final String MAX_INPUT_LENGTH = 100;
if (MAX_INPUT_LENGTH < input.length()) {}

 

메서드명 변경

addActLsnr => addActionListener

rmFcsLsnr => removeFocusListener

 

임시 변수 제거

// Before
int width = r.getWidth();

if (width > 0) {
	...
}


// After
if (r.getWidth() > 0) {
	...
}

 

조건 분기 간결화

조건문을 분해하여 메서드로 추출.

 

하나의 메서드 안에는 되도록이면 하나의 조건문, 하나의 반복분만 존재하는 것이 좋다.

// Before
if (x < 0) { return false; }
if (y < 0) { return false; }


// After
if (x < 0 || y < 0) { return false; }


// After
if (isOut(x, y)) {
	return false;
}

 

에러 코드를 예외로 치환, 예외를 조건 판정으로 치환

// Before
int getArea(int width, int height) {
	if (width < 0 || height < 0) {
    	return 1;	// 에러 코드 반환
    } else {
    	return width * height;
    }
}


// After
int getArea(int width, int height) {
	if (width < 0 || height < 0) {
 		throw new IllegalArgumentException();
    } else {
    	return width * height;
    }
}


// After
int getArea(int width, int height) {
	if (width > 0 && height > 0) {
    	return width * height;
    }
}

 

생성자 팩토리 메서드로 치환

// Before
public class Shape {
	private int typeCode;
    
    public Shape(int typeCode) {
    	this.typeCode = typeCode
    }
}


// After
public class Shape {
	private int typeCode;
    
    public static Shape of (int typeCode) {
    	return new Shape(typeCode);
    }
}

이 부분은 이펙티브 자바에서 다시 다루자. 1장인가에 있던 기억이...

 

 

728x90
반응형
LIST