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
   9   10   11   12   13   14   15   16   17   18   19