Page 11 - 006963
P. 11
마틴 파울러(Martin Fowler)가 제안한 <리팩토링: 코드 품질을 개선하는 객체지향 사고법>(한빛미디 1
어, 2012) 같은 도구를 작성하기는 매우 어렵습니다. 그리고 이러한 도구는 동적이고 다양하게 변
형된 생태계(2장 참고)가 존재하는 자바스크립트에서 리팩토링을 하는 사람들의 상상력을 뒤처지 리팩토링이란?
게 할 것입니다.
파울러의 접근 방식은 자동화보다는 안전하지 않은 상태를 최소화하는 코드로 변경하는 단계의
리팩토링 ‘메커니즘’에 중점을 두었습니다.
책에서 옵다이크가 이야기한 자동화된 접근법만 사용한다면 리팩토링은 많이 지연될 수 있습니
다. 그리고 이 방식은 파울러가 강조한 기계적인 접근(단계적 절차) 방식에서 벗어납니다. 그것은
주어진 리팩토링을 이용하여 코드에 대해 확신하기에, 테스트할 때마다 변경 사항의 성공 여부를
간단하게 확인할 수 있는 코드를 준비해야 하기 때문입니다. 그래서 책에서는 리팩토링한 코드가
제대로 실행되지 않을 때 변경 전 코드로 되돌릴 수 있도록(롤백) 반드시 버전(우리는 깃(git)을 사
용합니다) 관리를 사용하여 단계적으로 리팩토링을 진행하는 파울러 접근 방식도 고려하면서 진
행합니다.
버전 관리를 사용하세요!
코드를 변경한 후 이전 상태로 쉽게 되돌릴 수 없다면 기반 코드에 심각한 영향을 줄 수 있습니다. 리팩토링 계획이 있
는 기반 코드를 백업하지 않았다면 책을 내려놓으세요. 그리고 버전 관리를 한 후 다시 시작하기 바랍니다.
버전 관리를 사용하고 있지 않다면 깃(http://git-scm.com/)을 추천합니다. 그리고 깃허브(http://github.com)에서
여러분이 한 작업을 백업하길 권장합니다.
물론 책 앞부분에서 자동화와 역학의 (메커니즘) 접근법을 비교하는 것은 무신경하게 반응하는 것
처럼 보일 수 있습니다. 그러나 기본적으로 책에서 사용된 절차[적색(테스트 실패 상태), 녹색(테
스트 통과 상태), 리팩토링 주기, 무언가 잘못되면 신속하게 되돌아가는 롤백(roll back)]는 품질 관
리 팀이 가장 많이 취하는 단계적인 작동 방식을 기반으로 합니다. 아마도 나중에는 자동화된 리
팩토링이 파울러의 광범위한 리팩토링 카탈로그와 책에서 소개된 모든 내용에 부합하겠지만, 시
간이 좀 걸릴 것입니다.
우리 목표는 자바스크립트 개발자를 지저분한 곳에서 내보내는 것입니다. 이 작업은 자동화와 기
계화를 시도하는 과정이 되겠지만, 겸손한 거장들(옵다이크, 파울러, 존슨 등)의 작업 중 가장 중
요한 부분은 우리 코드를 더욱 개선하고 안전하게 만드는 새로운 접근법을 제공할 것입니다.
027
리팩토링 자바스크립트(본문)최종.indd 27 2018-09-19 오전 1:31:09