본문 바로가기

카테고리 없음

자동 빌드 툴 개미의 체질 개선(Ant 리팩토링)

신입사원 시절에 조금이라도 좋다는 자바 기술이 있으면 이것저것 맛을 봤던 기억이 떠올랐습니다. 문제는 대형 할인 매장 시식 코너의 좁쌀만한 음식 먹은 것처럼 맛을 봤다는 것이 문제였습니다.

그래도 당시 유독 나에게 와 닿은 자바기술이 있었으니 바로 ‘리팩토링’ 이라는 객체지향 프로그래밍 기법이었습니다.


> 리팩토링(Refactoring)

‘리팩토링’을 내 나름대로 정리하면 ‘구현된 기능은 그대로인 상태에서 내부 소스를 이해하기 쉽게, 객체지향스럽게 개선한다.’ 로 이해하고 있습니다. 요즘 널리 쓰이는 개발자 격언으로 ‘훌륭한 개발자는 남이 알아보기 쉬운 프로그램을 짠다.’ 라는 비슷한 격언이 널리 쓰이고 있습니다.

리팩토링은 개발자의 소중한 미덕인 ‘남이 봐도 이해하기 쉬운 코드 만들기’를 도와 주면서, 결국 생산성과 확장성, 유지보수 편의성등의 혜택을 누리게 해주는 최고의 비급이라고 생각하고 있습니다.

다만 너무 ‘리팩토링’을 즐겨 쓰지는 말아라. 결국 구현된 기능은 똑같은 상태기 때문에 회사에서 잘 알아주지 않는다. 라는 말을 어디서 읽은 적이 있었는데요. 안타깝습니다만 맞는 사실입니다. 균형있게 써야겠습니다.


> Ant와 리팩토링

최근에 ‘나를 편하게 하는 기술을 배우자’ 라는 글을 썼는데요. 사실 저를 포함한 개발자들이 고생할때마다 투덜거리면서도 ‘삽질’을 계속 반복하는 경우가 많을 것입니다. 이유는 한마디로 삽질을 개선시켜주는 기술 배우기가 귀찮기 때문입니다. 귀찮더라도 ‘삽질’ 줄이기에 노력해야겠습니다.

개발자의 ‘삽질’을 줄여주는 대표적인 기술이 Ant라는 빌드 자동화 툴입니다. 개미라는 별명에 알맞게 차근차근 자기 할일 다하면서, 또는 개미라는 별명에 맞지 않게 쌩~하니 빠르게 일처리를 해줍니다.

‘자동 빌드’ 라 하면 개발 후 프로그램 작동과 관련된 일련의 절차를 자동화한다는 것으로 이해하고 있습니다. 사람으로 따지면 삽질을 로보트가 대신해주는 것과 비슷합니다.

예를 들어 저 같은 경우는 ‘개발된 소스를 jar로 묶어서 lib 디렉토리에 복사하고 FTP에 접속하여 특정 디렉토리에 jar를 쏘고 기타 관련 파일도 수작업 복사후 FTP 쏘는 작업’을 반복 해야 하는데요. Ant를 쓰면 버튼 하나만 톡~ 누르면 한방~에 처리해주는 아름다운 놈 입니다.

사실은 이렇게 따로 설명 안해도 워낙 대중적인 툴이니 잘 아시리라 생각하고요. Ant도 리팩토링을 할 수 있다는 것을 무심코 느꼈지만 아래 소개 기사를 통해 다시 새롭게 와닿게 되어 소개하게 되었습니다.

Ant를 통한 빌드자동화를 위해서는 스크립트를 만들어야 되는데 이것도 일종의 언어(스크립트)라 막 짜다보면 지저분 할 수 있습니다.

아래 소개 기사에서는 Ant 스크립트를 깔끔하게 정리할 수 있는 리팩토링 방법을 소개 합니다. 저는 ‘긴 타겟 냄새를 풍기지 마라’, ‘하드 코딩의 폐해’에 대하여 개선(리팩토링)을 해보았습니다.

해본 결과 제가 생각하는 리팩토링의 효과는 '리팩토링 한 영역'에 접근하기가 쉬워진다는 것입니다. 예를 들어 제가 Ant 스크립트를 그대로 방치했다면, Ant에 대한 추가/수정 작업이 발생할 경우 지저분한 스크립트 건들기 귀찮아서 그냥 놔둘지도 모릅니다. 마치 '깨진 창문’ 효과와 비슷합니다.

그런데 Ant 스크립트를 개선했더니 예전보다 Ant 스크립트를 조금이라도 자주 보고 쓸만한 자동화 기능을 추가하는 습관을 가지기 시작했습니다.  

이렇게 점진적으로 리팩토링 하는 재미가 쏠쏠하던데요. 틈나는대로 리팩토링 통해 멋진 프로그램 만들어야 겠습니다.


> IBM developerWorks

사람을 위한 자동화: 빌드 스크립트에서 나는 “악취(smell)” 제거하기 (한글)