Refactoring to Patterns - 패턴을 활용한 리팩터링
자바개발자로서 생활을 하다가 보면, 신규 솔루션이나 새로운 도메인 영역을 개발을 해야 할때도 있지만, refactring역시 중요한 업무중의 하나이다.
국내 현실에 있는 대부분의 코드들은 OOP의 개념을 잡고 만든 코드들을 만나보기 힘들고, 양질의 코드보다는 단순 스크립트 코드들이 즐비한 상태이고, 중복 코드가 곳곳에 존재를 하며, 레이어간 분리가 잘 안된 경우도 허다하다.
이 코드들을 분석을 해서 refactoring을 하는 작업은 힘들고, 고통스러운 경우가 많다.
refactoring의 고통은 해본 사람들은 코드를 아예 재작성이 낫다고 얘기할 만큼 쉬운 것이 아니다.
refactoring을 하는 이유
- 새로운 코드를 더 쉽게 추가할 수 있도록 하기 위해
- 기존 코드의 설계를 개선하기 위해
- 기존 코드를 더 잘 이해하기 위해
- 덜 짜증나는 코드로 만들기 위해
refactoring을 하다가 보면, 더 자세히 코드를 보게 되고, refactoring을 통해서 나온 코드들은 자신이 읽기에 편하다. 그래서, 나는 기존 코드를 더 잘 이해하기 위해 refactoring을 선택을 자주 한다. 모르는 상태에서 버그를 일으키는 시스템보다는 좀더 공격적으로 코드개선을 통해서 risk를 관리해 나가는 것이 일정한 시점에 이르면 더 강건한 시스템을 만들 수 있기 때문이다.
리팩토링의 진정한 가치는 아래와 같은 그림, 링크에서 처럼 어느 순간에 급격하게 증가한다.
http://www.ologist.co.kr/376

refactoring하는 기준과 목적은 무엇일까? GOF의 디자인 패턴은 어떤 목적으로 쓰여진 얘기일까? marting fowler가 쓴 refactoring은 어떤 모습을 지향하는 것일까?
많은 사람들이 기존에 코드를 유지보수가 편하게 하기 위해서 refactoring을 하다가 보면, 자신도 모르는 사이에 어떤 패턴(GOF Patterns)의 모습으로 코드를 만들어 가고 있다는 것을 깨닫게 된다.
이 책을 보면, 그들 간의 유기적인 관계(디자인 패턴과 리팩터링의 상호관계)를 알수가 있게 된다.
막연했던 카탈로그들을 그 책을 본 동등한 필자(Joshua Kerievsky)가 그가 경험하고, 실전에 써먹었던 코드들을 바탕으로 책을 써내려간다. TDD 및 XP,애자일 사상이 곳곳에 보이는 이 책은 refactoring을 하고자 하는 이에게 나침반 같은 존재가 될것 이다.
refactoring의 방향성을 찾고 싶다면.
1. GOF 디자인 패턴
2. Refactorign - martin folwer
를 반드시 봐야 한다.
그리고, 이 책으로 좀더 실전적인 감을 익히고, 시작하면 더 양질의 코드를 만들수 있지 않을까 기대가 된다.
이 책의 목적
- 리팩토링과 패턴을 어떻게 결합하는지 이해
- 패턴을 고려한 리팩터링으로 기존 코드의 설계를 개선
- 코드에서 패턴을 고려한 리팩터링이 필요한 영역을 식별
- 새로운 설계의 초기부터 패턴을 사용하는 것보다 기존 코드를 개선하기 위해 패턴을 사용하는 것이 좋은 이유를 이해
Joshua Kerievsky
- XP전문기업 Industrial Logic(http://industriallogic.com)
- 전문 소프트웨어 개발자, 코치, 강사
트랙백 보낼 주소 :: http://www.ologist.co.kr/trackback/382
-
디자인패턴 vs 리팩토링
from mEmOpAd2006/10/06 18:42디자인 패턴은 리팩토링이 겨냥한 과녁 중 하나다. - 마틴파울러 (Refactoring 저자)어떤 경우에는 리팩토링의 결과가 디자인 패턴이 적용된 프로그램이다. 이건 너무나 당연하다. 디자인 패턴은 그동안 수많은 전문가들이 문제를 해결하기 위해서 사용해온 검증된 기법들이므로 디자인 패턴이라는게 나오려면, 그 전문가들 조차도 문제를 해결하기 위한 코드를 작성하고 그 후에 코드리뷰를 통하여 세련되고 깔끔한 멋진 코드로 바꾸면서 리팩토링을 해야만 하는.. -
마틴파울러의 리팩토링관련 어록
2006/10/10 10:31출처 : 자바 프레임워크 네이버 카페 (http://cafe.naver.com/deve.cafe) 1. 새로운 기능을 추가해야 하는데 프로그램의 코드가 새로운 기능을 추가하기 쉽도록 구조화 되어 있지 않은 경우에는 먼저 리팩토링을 해서 프로그램에 기능을 추가하기 쉽게 하고, 그 다음에 기능을 추가한다. 2. 리팩토링을 시작하기 전에 견고한 테스트 셋을 가지고 있는지 확인하라. 이 테스트는 자제 검사여야 한다. 3. 리팩토링은 작은 ..


