What Is Prefactoring

Tags:

What Is Prefactoring

Prefactoring is the application of past experience to the creation of new software systems. Past experience includes both your own and that of others, particularly lessons learned from refactoring. The experience is captured in a number of guidelines that can be easily applied to the development process.

Prefactoring 책은 읽어볼만은 할 듯. 하지만 여기서 제시한 개념에 대해서는 제 겨우 전적으로 반대 입장. 완전한 디자인을 갖고 하던가 혹은 약간의 디자인과 XP로 하던가 하는 쪽이 훨씬 낫다고 생각합니다. 그것도 아니고 단지 미래에 이것이 쓰일지도 모른다는 식으로 추상화하는건 불필요하게 개발 속도를 너무 늦춘다고 생각이 드는군요. 제가 사실 그런식으로 이런 추상화가 지금 발생하는게 좋을것같아라며 코딩했었는데, 중소규모 apps에선 그런 접근이 하나도 도움이 안됨. 결국 그 추상화는 필요가 없기 쉽고, 미처 생각하지 못한 부분에서 추상화에 대한 요구가 발생하더군요.

Comments

4 responses to “What Is Prefactoring”

  1. 공성식 Avatar
    공성식

    디자인 패턴을 이용하는 것도 결국 Prefactoring이라고 할 수 있지 않을까요?
    지금 당장은 필요 없지만 코드의 유지보수상 필요할 거라 추측되는 부분에 대해서 유연하게 설계하는 것이니까요.
    사실 경험이 바탕이 되지 않고서는 어떤 코드가 variant한지를 미리 결정할 수 없죠.
    그래서 제 생각으로는 시스템의 개발자도 일정 기간 동안 시스템의 유지보수를 경험해봐야 할 거라 생각합니다.
    특히 자신이 짠 코드를 유지보수하다 보면 스스로 한심하다고 느낄 만큼 코드가 유연하지 않은 것들을 많이 발견하게 되잖아요.
    개발자들이야 기한 내에 완성하는 것이 더욱 중요하게 느껴질 테니 미리부터 유연한 설계를 고려하지 않는 경우가 많겠지만요…

    “Code to interfaces, not to implementations” 라는 말은 그래서 아주 소중한 말로 들립니다.

  2. MKSeo Avatar
    MKSeo

    음 저는 그러니까 design pattern 이 잘 적용되려면 미리부터 잘 설계를 해야하는 것이 필요하고, 결국 고전적인 한번에 몽땅 설계하기로 돌아가는게 더 맞다고 생각이 되서요. 개인적으로는 약간의 디자인 패턴을 적용한 디자인에서 출발해 계속 필요에 따라 evolve 하는게 좋아요;; 흔히 반복을 제거할 때, “2번까지는 그냥해라. 세번째엔 refactoring해라”라고 하는데, 저는 그쪽을 지지해요. 반면 prefactoring은 “어차피 2번하는건 세번하게 될 거고, 어차피 리팩토링 할거니까, 미리부터 리팩토링이 필요없게 해놓자”라는건데 그점에 대해서 약간 부정적이예요.

    뭐 제가 디자인에 대해 사실 아는게 없지만;

  3. 공성식 Avatar
    공성식

    >> design pattern 이 잘 적용되려면 미리부터 잘 설계를 해야하는 것이 필요하고

    말씀하신 내용 중 위의 부분은 좀 애매한 내용이라고 볼 수 있습니다.
    *잘 설계를 한다*는 것은 두 가지 의미로 해석이 가능합니다.
    1. 미리 big picture를 완전히 알고서 그것이 변하지 않는다는 것을 가정하고 설계한다. (전통적인 워터폴 방식)
    2. 변화를 미리 예상하고 유연하게 만든다. (agile programming)

    사실 1번의 경우엔 디자인 패턴이 꼭 필요하진 않을 것 같습니다.
    디자인 패턴은 오히려 2번처럼 변화가 예상되고 미리 디자인을 확정할 수 없을 경우에 필요할 것 같아요.
    그러므로 그 이후에 말씀하신 고전적인 설계로 돌아가는 것과는 방향이 다르다고 느껴집니다.

    요지는 디자인 패턴이라는 것 자체가 변화에 적응하기 위한 것이고 prefactoring과 맥을 같이 하는 거 아닐까 하는 저의 생각을 말씀드린 것입니다…:-)

  4. MKSeo Avatar
    MKSeo

    음 저도 동의해요. prefactoring은 디자인 패턴과 맥을 같이 하는 듯.

Leave a Reply

Your email address will not be published. Required fields are marked *