컴퓨터가 이해하는 코드는 어느 바보나 다 짤 수 있다. 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 짠다.[F,15]
자바개발자로서 생활을 하다가 보면, 신규 솔루션이나 새로운 도메인 영역을 개발을 해야 할때도 있지만, refactring역시 중요한 업무중의 하나이다.
국내 현실에 있는 대부분의 코드들은 OOP의 개념을 잡고 만든 코드들을 만나보기 힘들고, 양질의 코드보다는 단순 스크립트 코드들이 즐비한 상태이고, 중복 코드가 곳곳에 존재를 하며, 레이어간 분리가 잘 안된 경우도 허다하다.
이 코드들을 분석을 해서 refactoring을 하는 작업은 힘들고, 고통스러운 경우가 많다.
refactoring의 고통은 해본 사람들은 코드를 아예 재작성이 낫다고 얘기할 만큼 쉬운 것이 아니다.
refactoring을 하는 이유
새로운 코드를 더 쉽게 추가할 수 있도록 하기 위해
기존 코드의 설계를 개선하기 위해
기존 코드를 더 잘 이해하기 위해
덜 짜증나는 코드로 만들기 위해
refactoring을 하다가 보면, 더 자세히 코드를 보게 되고, refactoring을 통해서 나온 코드들은 자신이 읽기에 편하다. 그래서, 나는 기존 코드를 더 잘 이해하기 위해 refactoring을 선택을 자주 한다. 모르는 상태에서 버그를 일으키는 시스템보다는 좀더 공격적으로 코드개선을 통해서 risk를 관리해 나가는 것이 일정한 시점에 이르면 더 강건한 시스템을 만들 수 있기 때문이다.
refactoring하는 기준과 목적은 무엇일까? GOF의 디자인 패턴은 어떤 목적으로 쓰여진 얘기일까? marting fowler가 쓴 refactoring은 어떤 모습을 지향하는 것일까?
많은 사람들이 기존에 코드를 유지보수가 편하게 하기 위해서 refactoring을 하다가 보면, 자신도 모르는 사이에 어떤 패턴(GOF Patterns)의 모습으로 코드를 만들어 가고 있다는 것을 깨닫게 된다.
이 책을 보면, 그들 간의 유기적인 관계(디자인 패턴과 리팩터링의 상호관계)를 알수가 있게 된다.
패턴과 리팩터링 사이에는 자연스런 관계가 있다. 패턴을 도달하고 싶은 곳이고, 리팩토링은 그곳으로 가는 방법이다.[F,107]
막연했던 카탈로그들을 그 책을 본 동등한 필자(Joshua Kerievsky)가 그가 경험하고, 실전에 써먹었던 코드들을 바탕으로 책을 써내려간다. TDD 및 XP,애자일 사상이 곳곳에 보이는 이 책은 refactoring을 하고자 하는 이에게 나침반 같은 존재가 될것 이다.
refactoring의 방향성을 찾고 싶다면.
1. GOF 디자인 패턴
2. Refactorign - martin folwer
를 반드시 봐야 한다.
그리고, 이 책으로 좀더 실전적인 감을 익히고, 시작하면 더 양질의 코드를 만들수 있지 않을까 기대가 된다.
이 책의 목적
리팩토링과 패턴을 어떻게 결합하는지 이해
패턴을 고려한 리팩터링으로 기존 코드의 설계를 개선
코드에서 패턴을 고려한 리팩터링이 필요한 영역을 식별
새로운 설계의 초기부터 패턴을 사용하는 것보다 기존 코드를 개선하기 위해 패턴을 사용하는 것이 좋은 이유를 이해
예전에 head first시리즈가 출간되는 것을 보면서 그저그런 책이려니 생각을 했다.
자바기초서부터 디자인 패턴, UML 등등의 책을 이미 몇권정도 본 나로서는 별로 매력을 못 느끼고 있었다.(물론, 다 읽었다고 이해했다는 것은 아님...^^;)
하지만, 지난달이던가? Head Fisrt Design Pattern책을 보기 시작하면서 내가 그동안 얼마나 이해력이 부족했던가를 깨닫게 되었다. 책을 읽다가 느끼는 감동...그래 이렇게 풀어가면 되는거였는데, 그 동안 내가 잘못만든 코드들이 눈앞에 스쳐지나갔다...T.T
그 뒤에 사내 강좌를 들으면, Head fisrt시리즈를 준다는 얘기에 자바fundamantal,서블릿 기초를 듣는다. 실무5년이 지난 지금 다시 한번 기초를 보는 것도 의미있다고 생각이 되었고, head fisrt만의 맛깔스러운 설명을 보고 싶어서이다. 사실 디자인 패턴책을 읽고는 중독성도 보이고 있다.
Head Fisrt 시리즈 중에 디자인 패턴만 독파를 했는데, 정말 강추하고 싶은 책이다.
디자인 패턴을 잘하시는 분까지 포함해서 Spring을 잘 하고 싶은 모든 개발자들은 한번씩 보고 넘어가야 할 필독서라고 감히 추천을 때린다!!!