Page 14 - 006963
P. 14
다음 코드에는 테스트나 문서 및 관리 운용에 대한 지원이 없다고 가정합니다.
function doesThings(args, callback){
doesOtherThings(args);
doesOtherOtherThings(args, callback);
return 5;
};
동작이 바뀌었다면 우리가 관심을 가졌을까요? 실제로는 그렇지 않을 것입니다! 하지만 이 함수
는 많은 것을 내포하며, 우리가 이해할 수 없다고 해서 중요하지 않다고 여기면 안 됩니다. 이러한
태도는 생각보다 훨씬 더 위험합니다.
우리는 아직 리팩토링을 하지 않았기 때문에 해당 코드 동작이 변경되었는지는 신경 쓰지 않습니
다. 또 테스트가 부족한 코드(또는 실행시킬 수 있는 최소한의 문서)가 있더라도 코드를 변경하기
싫을 수 있습니다. 그렇게 하면 동작이 변경되었는지 검증할 수 없어 리팩토링을 할 수 없습니다.
나중에 책에서는 검증되지 않은 코드를 다루는 ‘특성화 테스트’들을 만들어 봅니다.
이러한 상황은 기존 코드에만 국한하지 않습니다. 자동이나 수동 여부에 상관없이 테스트를 거치
지 않은 코드는 리팩토링할 수 없기 때문입니다.
Note 테스트가 작성될 때까지 리팩토링 대화를 진행하는 방법
“저는 이메일 주소와 사용자 이름을 확인할 수 있는 로그인 부분을 리팩토링했어요.”
“아니, 넌 하지 않았어.”
“저는 ___로 코드를 리팩토링하고 있습니다.”
“아니, 넌 그렇지 않아.”
“테스트를 추가하기 전에 리팩토링을 해야 합니다.”
“아니.”
“그 리팩토링…….”
“아니.”
“리팩…….”
“아니.”
030
리팩토링 자바스크립트(본문)최종.indd 30 2018-09-19 오전 1:31:09