• 자바로 배우는 리팩토링 입문 리뷰

    각 주제별 리팩토링 하는 내용이 인트로에서 소개한 악취 및 기술적 부채의 어느 부분에 대한 내용인지에 대한 주제별 연결고리에 대한 표현이 약한 듯 하여 아쉽다. 물론 카탈로그 표와 UML 을 이용하여 나타내긴 했지만 예제가 하나의 어플리케이션으로 연결이 되지않아서 각각의 리팩토링 주제들이 이어지지 않는 느낌이 들었다. Network, Database, Database, Device 가 어우러진...


  • Java Refactoring Replace type code with SubClass

    이전 포스팅에서 분류 코드를 클래스로 치환 하는 방법에 대해 알게 되었다. 글 마지막에 이야기 했듯이 단순 분류를 하는 것 이상으로 그 이후의 동작이(메소드) 필요하다면 단순 클래스로 치환보다는 하위 클래스로 치환 하는 것이 쉽게 해결할 수 있는 방법이다. 개인적인 생각으론 단순 분류 코드는 enum 을 이용한 정리가 더 의미상 깔끔하지 않을까...


  • Java Refactoring Replace typecode with Class

    분류 코드는(type code)는 객체의 종류를 나타내는 값을 말한다. 예를 들어서 페이스북의 타임라인을 보면 사용자들의 게시물, 공유 게시물, 광고등의 여러가지 뷰들이 나오는데 이를 구별하여 렌더하기 위해서는 각 데이터들별로 매칭되는 view type code 값이 필요할 것이다. 본인 게시물 = 0 공유 게시물 = 1 광고 - 2 와 같이 분류할 수 있을...


  • Java Refactoring Extract class

    클래스는 속성을 가지고 행위를 처리하고 책임지는 주체입니다. 이상적인 클래스는 한가지 책임을 지는 클래스 이고 이를 행하기 위해 여러 패턴들이 만들어졌습니다. 하지만 코드가 늘어나고 기능이 추가됨에 따라 어떤 클래스들은 이러한 단일책임원칙을 지키기 어려워질 수 있습니다. 이런 경우 해당 행위를 다른 클래스에게 위임하는 방법이 있습니다. 리팩토링 카탈로그(클래스 추출) 이름 클래스 추출(Extract Class)...


  • Java Refactoring Extract method

    필드 혹은 멤버변수 가 어떤 객체가(dog,cat,person,…,etc) 가지는 속성(age,sex,height,width,sound,…,etc)이라면 메서드(method)는 객체들의 행동을(run,play,stop,increase,…,etc) 매핑하는 것이다. 우리가 일반적으로 생각하는 행동들을 코드로 매핑하기위해서 작성하다 보면 행동들을 준비하기 위해서라거나 혹은 행동의 결과를 정제 한다던가 하는 행동들이 필요해질 수 있다. 이러한 작업들은 주로 반복되기 마련인데 코드상의 반복되는 코드들을 다시 행동으로 나타내게 되면 중복 코드를 줄일 수...