본문 바로가기

Development Note

RTP : 2장. 리팩터링

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
2장에서는 리팩터링에 대한 개념과 리팩터링을 위해 필요한 것들에 대해서 알려주고 있다.


리팩터링이란?

리팩터링을 마틴 파울러가 정의하기를 '겉으로 보이는 동작을 바꾸지 않고, 이해하거나 수정하기 쉽게 소프트웨어의 내부 구조를 바꾸는 것' 이라고 되어있다. 모든 리팩터링은 작은것에 부터 시작하고, 작은 것들이 모여서 대규모의 리팩터링이 된다. 리팩터링을 띄엄띄엄 하기보다는 지속적으로 할때 최상의 효과를 얻을수 있다.



리팩터링을 하는 이유

새로운 코드를 더 쉽게 추가할 수 있도록 하기 위해
기존 코드의 설계를 개선하기 위해
기존 코드를 더 잘 이해하기 위해
덜 짜증나는 코드로 만들기 위해

궁극적으로는 사람이 읽기 쉬운 코드를 만들기 위해


많은 눈

최상의 리팩터링 결과를 얻으려면 많은 눈(사람)의 도움을 받는 것이 좋다. 따라서 XP개발 방법론에서 페어 프로그래밍과 공동 소유를 주장하는 이유가 이와 같다.


사람이 읽기 쉬운 코드


java.util.Calendar c = java.util.Calender.getInstance();
c.set(2005, java.util.Calendar.NOVEMBER, 20);
c.getTime();

public void Date november(int day, int year){
   ...
}
november(20, 2005);

컴퓨터가 이해하는 코드는 어느 바보나 다 짤 수 있다. 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 짠다.



깔끔하게 유지하기

코드를 깔끔하게 유지하려면, 지속적으로 중복을 제거하고 코드를 단수화하고 더 명확하게 고쳐야 한다. 난잡한 코드를 허용해서는 안 되고, 나쁜 습관으로 되돌아가서도 안된다.



작은 단계

코드 속의 냄새를 제거하는 방법은 복잡하고 어려운 리팩터링이 아니라, 하나의 작은 리팩터링이 지속적으로 이루어 지면서 복잡한 리팩터링이 만들어 지는 것이다. 따라서 복잡한 단계부터 진행하는 것이 작은 단계부터 진행하는 것보다 단위 테스트의 실패를 양산하기 때문에 이를 바로 잡기 위한 시간이 많이 소요 된다.



설계 부채

기술적인 입장에서 리팩터링을 설명해서는 대다수의 경영진을 효과적으로 설득하기 어렵다. 기술적 문제를 논의하는 데 설계 부채라는 금전적 비유를 사용하는 것이 경영진을 설득하는 데 큰 도움이 된다는 것은 이미 검증된 사실이다.