요즘 한창 Refactoring 과 Design Patterns 을 공부하고 있다.

듣기는 많이 듣지만

사실 리팩터링과 디자인패턴이라는게 살갑게 와닿지 않았던게 사실이다.

뭐 예를 들어 "Barney 공식" 이라하면 어떤 소스고 어떻게 하는지 와닿지만

"컴포즈 메소드", "팩터리 패턴" 이라고 들으면 뜬구름인 마냥 대충 알겠지만

머릿속에 코드가 떠오를 정도로 와닿지는 않았다.

하지만 지금 읽는 책이 "Refactoring to Patterns" 인데 살갑게 와닿는 내용이 많다.

그래서 공유하고자 이렇게 키보드에 손을 얹었다^^

매우매우 원시적이며 이해하기 쉬운 살에 닿는 방식으로 설명하겠다.



우선 가장 기초적으로 리팩터링이란것이 무엇인지 알아보자.

Re-factoring 은 이미 진행되고 있는 프로젝트 중간에 투입되어 선임자의 코드를 이어 받는 경우와 이미 완료된 프로젝트를 수정 또는 보완하는 작업을 통상적으로 일컫는다.

간단하게 말해서 이미 잘 돌아가고 있는 코드를 분해해야 한다는 의미다.

극단적으로 간단한 예를 들어보자.

 - 원본 소스

소스 보기

 - Compose Method 패턴을 이용한 리팩토링

소스 보기



리팩터링의 동기, 즉 리팩터링을 하게되는 계기는 진행중이 프로젝트에 투입되거나

수정, 보완의 목적으로 기존의 코드는 변경하는것을 말한다.



리팩터링의 궁극적인 목표는 코드를 보다 이해하기 쉽게하고

예상 가능한 변동사항에 대비할 수 있도록 코드를 변경하는것이다.

첫번째 소스처럼 코드가 되어 있다면 CustomData.value 라는 파라미터가

String 에서 int 로 변경되었다면 저 조건문이 쓰인곳을 모조리 찾아가 바꿔야하는

난처한 상황에 부딪힌다.

하지만 Compose Method 패턴을 이용해

null 임을 체크해주는 checkNull 메소드를 제공함으로써

value 의 값이 널인지 아닌지 체크하는 부분은 checkNull 메소드부분만 변경하면 되는것이다.

이것이 바로 리팩터링을 하는 궁극적인 목표인것이다.
신고

+ Recent posts