두 개의 모자
2009. 10. 13. 05:51 in 2. Design/Refactoring

소프트웨어를 개발하기 위해 리팩토링을 사용할 때, 두 가지 구별된 작업(기능 추가와 리팩토링)을 위해 시간을 나누어야 한다. 기능을 추가할 때는 기존 코드를 건드려서는 안되고 단지 새로운 기능만 추가해야 한다. 테스트를 추가하고, 테스트가 잘 작동하는지를 확인함으로써 진행상황을 알 수 있다. 리팩토링을 할 때는 기능을 추가해서는 안되고, 단지 코드의 구조에만 신경써야 한다. 그리고 어떤 테스트도 추가하지 않는다 (이전에 빼먹은 테스트가 없는 한). 단지 인터페이스가 변하여 작업을 계속하기 위해서 어쩔 수 없는 경우에는 테스트를 수정한다.
소프트웨어를 개발할 때, 아마 모자를 바꿔 쓰는 자신을 발견할 것이다. 새로운 기능을 추가하기 위해 시작했는데, 코드 구조가 바뀌면 작업이 더 쉬워진다는 것을 깨닫는다. 그래서 모자를 바꿔 쓰고, 한동안 리팩토링을 한다. 코드의 구조가 더 좋게 바뀌었으면, 다시 모자를 바꿔 쓰고 새로운 기능을 추가한다. 새로운 기능이 제대로 작동할 때, 새로운 기능에 대한 코드가 이해하기 힘들게 작성되었다는 것을 깨닫고는, 다시 모자를 바꿔 쓴 다음 리팩토링을 한다. 이 모든 작업을 하는데 단지 10분 정도 걸릴 뿐이지만, 그 시간 동안은 항상 자신이 어떤 모자를 쓰고 있는지 알고 있어야 한다.
출처 : Refactoring - 마틴 파울러
소프트웨어를 개발할 때, 아마 모자를 바꿔 쓰는 자신을 발견할 것이다. 새로운 기능을 추가하기 위해 시작했는데, 코드 구조가 바뀌면 작업이 더 쉬워진다는 것을 깨닫는다. 그래서 모자를 바꿔 쓰고, 한동안 리팩토링을 한다. 코드의 구조가 더 좋게 바뀌었으면, 다시 모자를 바꿔 쓰고 새로운 기능을 추가한다. 새로운 기능이 제대로 작동할 때, 새로운 기능에 대한 코드가 이해하기 힘들게 작성되었다는 것을 깨닫고는, 다시 모자를 바꿔 쓴 다음 리팩토링을 한다. 이 모든 작업을 하는데 단지 10분 정도 걸릴 뿐이지만, 그 시간 동안은 항상 자신이 어떤 모자를 쓰고 있는지 알고 있어야 한다.
출처 : Refactoring - 마틴 파울러