Page 21 -
P. 21

리팩토링

                    이 규칙은 리팩토링 중 개선할 지점을 찾을 때 그리고 그 문제를 어떻게

                  처리할지 알아내는 데 도움이 된다. 시스템에서 중복되는 로직이 눈에 띄면
                  둘을 하나로 합쳐야 한다. 또 다른 위치를 발견하면 그 또한 새로 만든 포괄

                  적 체계에 통합하라.

                    즉, 하나로 통합해야 하는 구현체가 많을 때는 한 번에 통합하는 구현체를
                  두 개로 제한하는 방식으로 점진적 리팩토링을 할 수 있다. 그 과정에서 시

                  스템이 실제로 더 단순해지고 이해와 유지 보수에도 도움이 된다면 말이다.
                  가장 큰 효과를 보기 위해 어떤 순서로 통합하는 게 최선일지 고민해야 할

                  때도 있다. 답을 잘 모른다 해도 걱정하지 마라. 한 번에 두 개씩 통합하다
                  보면 결국 모든 문제에 잘 맞는 하나의 좋은 솔루션이 완성된다.

                    통합하면 안 되는 것을 통합하지 않는 것도 중요하다. 때로는 두 개의 구

                  현체를 하나로 통합했다가 시스템이 전체적으로 더 복잡해지기도 한다. 또
                  시스템 내의 모든 모듈, 클래스, 함수는 오직 하나의 개념만 나타내야 한다

                  고 명시한 단일 책임 원칙 Single responsibility principle을 어기게 되기도 한다.
                    시스템에 있는 ‘자동차’를 의미하는 코드와 ‘사람’을 의미하는 코드가 약간

                  유사하다고 해서 두 가지를 하나의 ‘자동차사람’ 클래스로 통합하지 마라.
                  이렇게 해서는 복잡성이 줄어들지 않는다. ‘자동차사람’은 사실 서로 다른 두

                  개념이 합쳐진 것이므로 두 개의 별도 클래스로 나타내는 것이 마땅하다.

                    ‘둘은 너무 많다’가 우주의 절대적인 법칙은 아니다. 점진적 개발 작업을
                  진행할 때 설계 관련 결정을 내리는 데 활용하기 괜찮은 지침이다. 그리고

                  적어도 레거시 시스템을 리팩토링하고, 새로운 시스템을 개발하고, 코드를
                  단순화하는 작업에 꽤 유용하다.









                                                                    12장  둘은 너무 많다  051




     심플소프트웨어_06.indd   51                                                 2019-10-18   오전 10:34:00
   16   17   18   19   20   21   22   23   24   25   26