티스토리 뷰

1장은 리팩터링의 진행 절차에 대한 구체적인 예시를 보여주는 리팩터링 맛보기 장이다.
하지만 1장의 읽어보고 내용을 요약하는 게 무의미하다고 보여서 과감히 생략하고... 책을 읽는데 앞서 중요하다고 보이는 서문의 내용 일부를 대신 정리했다.


 

리팩터링이란

- 리팩터링은 겉으로 드러나는 코드의 기능(겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어를 수정하는 과정이다.
- 버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법으로 코드를 작성하고 난 뒤에 설계를 개선하는 일이다.
- 예전부터 따르던 소프트웨어 개발 방법은 설계부터 하고 코드를 작성하는 순서다. 하지만 시간이 흐르면서 코드는 수정되고 시스템의 설계에 맞춘 구조는 점차 뒤죽박죽이 되어간다. 공학에 가깝던 코딩 작업은 서서히 해킹에 가까워진다.
- 리팩터링의 각 단계는 간단하다 못해 지나칠 정도로 단순하지만 이런 사소한 수정도 누적되면 설계가 놀라도록 개선된다. 소프트웨어가 부식된다는 개념의 정반대가 바로 리팩터링이다.
- 리팩터링을 하면 일의 균형이 바뀐다. 처음부터 완벽한 설계를 갖추기보다는 개발을 진행하면서 지속적으로 설계한다. 시스템을 구축하는 과정에서 더 나은 설계가 무엇인지 배우게 된다. 그 결과, 개발의 시작부터 끝까지 프로그램을 줄곧 우수한 설계를 유지한다.

책 전부를 읽지 않고 보는 방법

- 리팩터링이 뭔지 모른다면 1장을 : 1장의 예시를 보면 리팩터링 진행 절차를 명확하게 알 수 있다.
- 리팩터링해야 하는 이유를 모르겠다면 1장과 2장을 : 리팩터링이 무엇이고 왜 필요한지 설명해준다.
- 리팩터링해야 할 곳을 찾고 싶을 때는 3장을 : 리팩터링이 필요한 만한 곳에서 보내는 신호(악취)를 잡아내는 요령을 설명해준다.
- 리팩터링을 실습하고 싶다면 1장부터 4장까지는 꼼꼼히 읽고, 나머지를 빠르게 훑어보자 : 카탈로그(6~12장) 부분은 어떤 기법들이 있는지 정도만 대략 보면 되지, 세세한 부분까지 전부 이해할 필요는 없다. 리팩터링을 당장 해야 할 때 해당 기법 부분을 펼쳐 자세히 일고 따르면 된다.

책에서 다루는 내용

- 절제되고 효율적인 방식으로 리팩터링하는 법을 알려주는 것이 목표다.
- 코드에 버그가 생기지 않게 하면서 구조를 더 체계적으로 바꾸는 식으로 리팩터링 하는 방법을 설명한다.
- 카탈로그 목록이 이 책의 햄시이다. 대부분의 개발자가 익혀야 할 필수 리팩터링들을 담고 있다. 이 내용은 1990년대 후반에 리팩터링을 처음 배운 이후로 계속 보강되었고, 지금도 다 기억하지 못해서 틈틈이 참고하고 있다. (저자인 마틴 파울러의 얘기)

누가 읽어야 하나

- 리팩터링을 배우려는 개발자
- 리팩터링을 이미 이해하고 있는 사람에게도 교육용 자료로 가치가 있다. 숙련된 개발자가 동료들에게 멘토링해주는 데 활용할 수 있도록 다양한 리팩터링의 작동 원리를 설명하는데 공을 들였다.
- 리팩터링은 코드에 집중하지만, 사실 시스템 설계에 미치는 영향이 크다. 그래서 선임개발자나 아키텍트라면 반드시 리팩터링의 원리를 이해하고 프로젝트에 활용해야 한다.
- 정리된 용어는 설명을 대신할 수 있고 개발 도구가 제공하는 자동화된 리팩터링을 선택하는 데도 도움을 준다.

댓글