발췌 - 스크래치 리팩토링

Posted 2024. 12. 8. 13:18, Filed under: dev

마이클 C. 페더스 - 레거시 코드 활용 전략 (에이콘) 中 발췌.

 

p.295-296-

 코드를 배우는 최선의 기법 중 하나가 리팩토링이다. 코드에 뛰어들어 이리저리 손대면서 깔끔하게 만드는 것이다. 리팩토링의 유일한 문제점은 테스트 루틴이 준비돼 있지 않을 경우 위험한 작업이 될 수 있다는 것이다. 코드를 이해하기 위해 다양한 리팩토링을 했을 때, 무언가 잘못되지 않았는지 어떻게 확인할 수 있을까? 실제로는 이런 걱정을 할 필요가 없는 작업 방법이 있다. 먼저 버전 관리 시스템에서 코드를 체크아웃한다. 테스트 루틴 작성은 잊어버리자. 메소드 추출이든 변수 이동이든 다양한 방법으로 마음껏 리팩토링을 하자. 단, 그 코드는 다시 체크인하지 말고 그냥 버린다. 이를 스크래치 리팩토링 기법이라고 한다.
 이 방법을 함께 일하던 사람에게 처음 이야기했을 때, 시간 낭비라는 반응이 돌아왔었다. 하지만 이리저리 리팩토링하면서 30분 만에 코드를 상당히 높은 수준으로 이해할 수 있게 된 것을 보고 나자 그 사람은 이 기법의 열렬한 팬이 됐다.
 스크래치 리펙토링은 본질을 발견하고 코드의 동작을 이해할 수 있는 훌륭한 방법이지만, 몇 가지 위험 요소도 존재한다. 첫 번째 위험 요소는 리팩토링 중에 무언가 착각해서 시스템이 실제로는 하지 않는 일을 하고 있다고 잘못 믿어버리는 것이다. 이 경우 시스템에 대한 잘못된 관점을 가지게 되고 나중에 실질적인 리팩토링을 시작할 때 주저하게 된다. 두 번째 위험 요소는 첫 번째 위험 요소와 관련이 있다. 리팩토링을 한 결과에 집착하게 돼 항상 그 결과에 맞춰서 생각하게 되는 것이다. 얼핏 이는 그다지 나쁜 것 같지 않아 보이지만, 큰 문제를 일으킬 가능성이 있다. 실제 리팩토링을 수행하면 몇 가지 이유에서 동일한 구조로 되지 않을 수 있다. 나중에 더 훌륭하게 구조화하는 방법이 발견될 수도 있고, 코드를 바라보는 자기 자신의 관점이 변할 수도 있기 때문이다. 하지만 스크래치  리팩토링의 결과에 너무 집착하면 이러한 관점 변화를 깨닫지 못할 수 있다.
 스크래치 리팩토링은 코드의 중요한 부분을 이해하고 확신할 수 있는 좋은 방법이며, 이후의 변경 작업을 수월하게 해준다. 모퉁이 저편에 언제나 무서운 괴물이 숨어있는 것만은 아니라는 확신을 얻을 수 있다. 혹시 그러한 것이 있더라도, 최소한 미리 간파할 수 있다.

 

'dev' 카테고리의 다른 글

프로젝트 :: dreamdiary (since 2024.03.20-)  (0) 2024.03.20
Response :