ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Refactoring
    후기/Book Review 2018. 12. 8. 10:22



      구매한지는 3달쯤 되었지만 중간 중간 북리뷰와 베타 리딩 등이 있어서 이제야 다 읽었다. 워낙 유명해서 기대하고 본만큼 체계적으로 리팩토링에 대해 잘 이해할 수 있었다. 


    목차

    1. 맛보기 예제
    2. 리팩토링 개론
    3. 코드의 구린내
    4. 테스트 작성
    5. 리팩토링 기법 카탈로그에 대해
    6. 메서드 정리
    7. 객체 간의 기능 이동
    8. 데이터 체계화
    9. 조건문 간결화
    10. 메서드 호출 단순화
    11. 일반화 처리
    12. 복합 리팩토링
    13. 리팩토링, 재사용, 현실성
    14. 팩토링 도구

      1장에 나오는 statement라는 메소드가 예제로 나온다. 갑갑해 보이는 이 메서드를 메서드 분해, 기능 재분배 등의 리팩토링 기법을 사용하여 깔끔하게 고쳐나간다. 1장만 봐도 왠만큼 리팩토링에 대해 흥미가 생길만한 내용이다.

      3장은 코드의 구린내에 대해 설명하고 있다. 중복 코드, 장황한 메서드, 방대한 클래스, 과다한 매개변수, 수정의 산발, 기능의 산재, 잘못된 소속, 데이터 뭉치, 강박적 기본 타입 사용, switch 문, 평행 상속 계층, 직무유기 클래스, 막연한 범용 코드, 임시 필드, 메시지 체인, 과잉 중개 메서드, 지나친 관여, 인터페이스가 다른 대용 클래스, 미흡한 라이브러리 클래스, 데이터 클래스, 방치된 상속물, 불필요한 주석에 대해 설명하고 있다. 소챕터 제목만 봐도 무엇이 나쁘고 왜 나쁘지 대충 알법하다.  IDE (특히 Intellij)에서 코드의 구린내를 잘 잡아주는 것 같다. 중복 코드, 미사용 필드, 변수명 조언 등. 툴만 잘 써도 아름다운 코드드를 만드는데 큰 도움이 된다.

      테스트를 많이 강조하고 있다. 거의 리팩토링 스텝 스텝 사이에 테스트 & 컴파일(요새는 테스트 누르면 자동으로 컴파일이 되지만)를 하라고 조언하고 있다. 이렇게까지 해야하나 싶기도 하지만 (물론 나는 못지킬것 같다) 리팩토링은 기존의 기능에 변화가 없어야 하기 때문에 이해가 간다. 아무리 코드를 아름답게 변화시켜도 잘 돌던 기능이 안된다거나 하면 무슨 소용이 있을까. 기능의 추가/삭제도 없어야 한다고 하지만 보통 피처를 개발하면서 리팩토링을 같이 하기 때문에 이것도 조금 힘들어 보인다. 테스트가 성공하는 것으로 만족하자.

      책이 나온지 20년이 되어서 (아마존에 의하면 1999년 출판) 자바 초기 버전으로 작성된 것이 조금 아쉬운 부분이다. 람다나 스트림은 물론이고 enum이나 Generic도 없으니 요즘과는 조금 맞지 않는 코드로 설명되고 있다. 하지만 언어가 중요하겠는가. 그 의미와 목적들만 이해한다면 다른 언어, 어떤 버전이냐는 크게 중요하지 않을 수 있을 것이다. 아, 그리고 리팩토링 2판이 얼마전에 Java가 아닌 Javascript 베이스로 나왔으니 번역되면 새로 읽어봐야겠다.


    리팩토링, 한빛미디어(Martin Fowler)

    '후기 > Book Review' 카테고리의 다른 글

    OAuth 2.0 마스터  (0) 2019.03.03
    기계는 어떻게 생각하고 학습하는가  (1) 2019.02.02
    이것이 자바다  (0) 2018.11.10
    Head First Design Patterns  (0) 2018.09.07
    모두의 네트워크  (2) 2018.08.16

    댓글

Designed by Tistory.