본문 바로가기

Development Note

RTP : 1장. 이 책을 쓴 이유

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1장은 전반적인 책에서 지양하고 지향하고자 하는 바에 대해서 서술이 되어있다.

과도한 설계

코드를 필요 이상으로 융통성 있게 또는 정교하게 만드는 것을 의미한다. 과도한 설계를 하게된다면, 필요 이상으로 크고 복잡한 코드를 기반으로 작업을 해야한다. 이를 해소하기 위해 시스템을 영역별로 설계 하지만, 자신이 맡은 영역에 대해서만 작업하기때문에 중복된 코드를 양산 할 수 있다. 과도하게 설계된 코드는 생산성에도 영향을 미친다. 유지보수를 하고 설계의 의미를 파악하는데 많은 시간이 필요하다. 이러한 설계는 프로그래머나 아키텍트가 인지 하지 못하는 상황에 발생하는 경우가 많고 패턴을 이용한 사전 설계에 빠지곤 한다.



패턴 만능주의

패턴은 객체지향 설계를 위한 융통성있고 정교한 방법이지만, 패턴을 지나치게 활용하므로서, 작고, 단순하고 이해하기 쉬운 코드를 작성하는것을 간과하였다. 따라서 더 나은 소프트웨어 설계자가 되기 위해 열심히 패턴 공부를 함과 동시에 진정으로 더 나아가기 위해서는 패턴에 대한 맹신을 접어야 한다.


미진한 설계

과도한 설계보다 더 흔한 경우이다. 보통은 시간이 없거나 훌륭한 설계의 개념을 모르거나, 기존 시스템에 급하게 새로운 기능을 추가하거나 한꺼번에 많은 프로젝트를 참여 할 경우에 발생한다. 미진한 설계는 동작하도록 하는 코드를 빠르게 만들수는 있지만 지속적으로 미진한 설계가 쌓이면 소프트웨어 개발은 결국 "빠르다가, 느려지고, 더 느려지는' 양상이 된다.


테스트 주도 개발(Test-Driven Development)과 지속적인 리팩터링


TDD는  시스템이 작동하도록 설계하기 위해 생각하는 시간을 많이 소요하는대신에 제대로 동자가는 주요 기능을 몇 초 또는 몇분만에 만들어 낼수 있다. 그 다음, 리팩터링을 통해 필요한 수준의 정교함을 갖추게 발전시킨다.


리팩터링과 패턴

모든 패턴에는 의도라는 절이 있는데, 해당 디자인 패턴이 근본적으로 어떤 이유에서 사용을 하며, 의도는 무엇인지, 이 패턴이 해결하는 설계 이슈나 문제점이 무엇인지를 설명하고 있다. 하지만 보통은 패턴이 무슨일을 하는지에만 초점이 맞춰져 있다.

디자인 패턴은 리팩터링의 결과로 나온 구조를 반영하고 따라서, 디자인 패턴은 리팩터링의 목표점이 되는 것이다.