새로운 시작 – Refactoring to Pattern

Joshua KerivskyRefactoring to Pattern (역서 – 패턴을 활용한 리펙토링,  이하 줄여 RtoP)을 저희 EVA 팀에서  새로운 스터디로 진행했습니다.

현재 진행중인 Fearless Change와 병행해서 2주 씩 돌아가며 진행이 되어집니다. 관심 있는 분은 어서 댓글을 달아 주시길.. 🙂   패턴에 익숙한 저희가 이 책들을 보았을때의 느낌은, 정말 잘 쓰여진 서적이라는 겁니다.  Refactoring과 TDD를 잘 접목하여 step by step으로 Pattern으로 적용하는 내용이 아주 잘 표현되어 있네요.

서적 초반 부(1장)에 나오는 내용중에 가장 마음에 드는 내용이 이겁니다.  과도한 설계 와 미진한 설계.

모든 걸 패턴으로 해결해야 한다는 패턴 신봉자가 되어 과도한 설계를 그려내는모습과 정말 아무것도 준비하지 않고 대충 설계한 미진한 설계에 대한 이야기가 나옵니다.  이 사이에 균형을 맞추는 것이 바로 저희들이 해야 될 일이 아닌가 쉽습니다.

RtoP는 바로 Pattern으로 설계하는 그 과정을 보여 줍니다.

냄새나는 생성 로직 -> factory 로 바로 가는 것이 아니라. creation method를 1차적으로 만들고,  encapsulation을 거쳐 최종 factory 객체로 가는 모습을 보여줍니다.

굳이 Factory로 꺼낼만큼 생성 부분에 확장 가망성이 낮다면 , creation method에서 그쳐도 된다는 거지요.  정말  실용주의적으로 refactroing 하는 기법을 설명해 주고 있는 서적입니다.   지금 현재 PLoP 준비와 Fearless Change 준비로 제가 RtoP에 스터디에 단순히 참여만하고 있지만, 정말 공감할만한 내용들이 많은것 같습니다.

RtoP 동영상 강좌 공유

여러분에게 저희가 스터디 한 내용들을 실제 동영상으로 공유합니다.   바로 EvaCast.net을 통해서요.  많은 분들에게 약간의 도움이 되었으면 합니다.

스터디 후 회고

사실, 스터디뒤에 서로의 경험을 공유하는 시간이 있습니다. 이게 더 진국이고, 문제점, 해결책등에 대해 토론하는 시간을 가집니다.  다들 이제 당할때로 당한 처지라 여기서 서로의 경험들을 공유할때 많은 도움을 얻습니다.

저희 스터디때 나온 토론들을 공유하겠습니다.  대충 노트에 적은 것이라. 그렇게 자세하진 않습니다.

1장 . 이 책을 쓴 이유.

과도한 설계 와 미진한 설계.

미진한 설계 경험:
#1 플랫폼을 잘못 설계 했음, 배포를 고려하지 않음 (논리적으로 나뉘어져 있지만, 물리적으로 나뉘어져 있지 않아 컴파일 시간이 30분 이상 소요)
논리적으로 아키텍쳐가 나뉘져 있지만, 물리적으로 나뉘져 있지 않아서 힘듬
일부가 수정되더라도, 전체 빌드하는 시간이 엄청난다.
그래서 자기가 맞은 모듈에 변경이 발생하면, 서로 떠 넘기고 있다.
그래서 일을 넘기는게 관행이 되었다.
Toss – Toss – Spike 패턴

#2 – 전체 빌드는 되지 않지만, 부분적으로 빌드만 되는 프로젝트
예전에 해서 더이상 수정이 안되는 프로젝트
여러개의 프로젝트로 구축된 솔루션
그래서 순서를 따라가면 부분적으로 빌드 한다.

부작용으로, 미진한/과도한 설계에 적응하게 된다.

TDD
하고 있다 – 0
하려고 노력중 – 2
나혼자만 하기는 좀 그래요! – 5
그게 뭐냐? – 나머지

책에서 설명하는 거랑 괴리가 크다.
working effective legacy code.

TDD 성공한 회사 와 실패한 회사

실패한 회사 – 단순히 가이드라인만 제시하거나, 아예 모르거나 귀찮다고 생각하다.
일종의 패러다임의 변화기 예상된다.

성공한 회사 – 군대 문화와 대가를 잘 조합해, 강제적으로 도입하게 했다
N사 같은 경우 1년 정도를 지나 적응하게 만들었다.

IT Governance – 개발 조직만이 아닌 경영자의 실행의지, 그 외의 곳들이 이해할만한 문화로 형성
Microsoft 같은 경우 – FxCop (일종의 스타일, 동일한 설계 방식을 같게 만드는것)
MadDog – 미친개 (여거시 모듈의 검증을 받는거죠) TDD

나쁜 설계를 많이 봐서 성장했다.
#1 – c로 구성 / 4년동안 8명이 구축한 프로젝트
변수명 등 guide를 따르지 않아 따로 따로 쓴다.
전역 변수, goto 문
놀라운 주석 – 아직 구현 못했음, 비가 오네.. ,
개발자간에 repository가 달라서 고생했다. 남에것과 비교해 merge 하지 않아 정합성이 깨점
조건부 컴파일이 너무 많이 걸아나서, 힘들었다.
마지막의 문제를 다 처리하는 깔데기가 되었따 T_T
-> 여기서 이러한 경험을 바탕으로 하지 말아야할 것을 느꼇다.

자세 (나만의 해결법)
– 셀프 매니징
내가본 코드를 6개월 지나면 잊어 버려서, 주석을 많이 달고 사람이 이해하기 쉬운 코드를 작성하려고 노력했다.
충분한 시간이 있어야 된다.

2장 . 리펙토링

리펙토링

무에서 유를 창조하지 않는 한, 모든 것이 리펙토링이다.
단지 우리가 하는게 안전한 리펙토링이지.

agile에서 가장 중요시 여기는 것은 코드.
TDD 가 중요하지만, 3000피트의 뷰
올바른 설계 방법을 아는 경험. 지식등
전체적인 시선이 균형이 잡혀 있어야, 리펙토링 가능하다.

3장. 패턴

패턴 보관 상자

– ATAM (Architecture Trade-off Analysis Model)
– Tatic들 -> 곧 Pattern들

알고 있는 패턴도 좀 늘려놓고, 잘 정리해놓자.
전체 회고

손영수
– 좋은 점 : 프리젠테이션 스킬도 늘고, 조금더 키우면 강의하러 가자.

손정민
– 좋은 점 : 눈이 즐거웠씁니다 글과 말 위주의 얘기가 아니라, 프리젠테이션 스킬이 좋아졌음

김지원
– 좋은 점 : 4장까지 2시간 걸려서 읽었는데, 익숙한 개념이 다 나오는 건 보니까.
난 어느 정도 된 사람이다.

김희정
– 좋은 점 : 책 읽었을때는 당연한 얘기 같았는데, 발표 들었을때 개인적인 의견을 해줘서, 여러가지 생각을 할수 있었다.  빅뱅 이론 미드 좋았다. 천재들이 하는 공대 개그.

유성우
– 좋은 점 : 책의 내용을 넘어서 + 자신의 경험들을 하고, 쉽게 풀이하고자 노력을 많이 하신게 보인다.  많은 것을 얻어간거 같다.
– 인상 깊은 점 : 전술과 전력적인 사고를 예로 든 예시

장병진
– 좋은 점 : 프리젠테이션이 너무 재미있었다. 딱딱하지 않고. 좋았다.

백승용
– 힘들다 : 말하는 것은 여전히 힘들다.
하지만  다들 프리젠테이을 정말 잘했다고 피드백을 줌.

개선점
찾기가 힘들다 : 하지만 다음엔 아니까 패스!
Fearless change처럼 부담없이 적용하고 나눌수 있는 자리를 만들어 보자. 패턴 포커같은 거나 리펙토링 게임 찾아볼것

Join the conversation! 13 Comments

  1. […] This post was mentioned on Twitter by Kim tae yoon, Youngsu Son. Youngsu Son said: Refactoring to #Pattern 스터디 시작. 그리고 강좌 공유: 새로운 시작 – Refactoring to Pattern Joshua Kerivsky의… http://goo.gl/fb/sSQay […]

    응답
  2. 안녕하세요~
    예전에 GOF의 패턴책과 마틴파울러의 리펙토링을 본 적이 있는데, 그 책들의 백그라운드를 바탕으로 이 책을 보면 괜찮을까요?

    서점에 가서 직접 봐야 겠지만, 그 전에 패턴에 막 관심을 가지기 시작한 2-3년차 개발자가 보기에 어떨지 간단한 서평 부탁 드려도 될까요? ^^;

    응답
  3. 예전에 위 책들을 보고 나서 Pattern-Oriented Software Architecture 를 무턱대고 잡았다가 책의 난이도에 좌절했던 경험이 있어서 이번엔 좀 신중해 지네요~ ^^

    응답
    • 안녕하세요 🙂 요즘 업무가 밀려서 늦게 답변을 드리네요.
      GoF 패턴은 micro 패턴으로 일종의 패턴들을 엮어 주는 접착제(glue)같은 역할을 하는 패턴입니다. 그렇기 때문에 GoF 패턴만으로는 특정 도메인에 적합한 어플리케이션을 짜기 힘듭니다.

      그래서 거대한 Architecture를 다루는 POSA라는 서적을 보신거 같습니다.
      보셔서, 너무 어려워서 좌절하셨다고 하셨는데요 🙂

      사실 POSA 자체는 기반 시스템에 대한 이해가 좀 필요합니다.
      Broker 라는 패턴은 CORBA의 ORB (Object Request Broker)를 사용해보고 이해를 해본 사람이어야 좀더 와닿는 것이죠.

      그리고 Reflection 이라는 패턴이나 이러한 부분은 이미 java/c#에 reflection이라는 별도의 네임스페이스로 제공하고 있습니다. 이러한 것을 다루어 봤으면 좀더 와 닿았을 겁니다. 이러한 부분들에 대한 개별적인 경험들을 가져야먄 좀더 와 닿는다고 볼수 있습니다

      전 여러사람과 스터디를 해서 POSA1을 보시기를 권해드립니다. 현재 POSA1스터디를 하고 계신 그룹들이 있습니다. 그런 분들에게 물어보시거나, 아니면 저희 스터디에 오시면 저희가 POSA1 감역에 참여했으니 많은 도움을 드릴수 있다고 봅니다. 🙂

      응답
    • Refactoring to Pattern을 패턴을 이용해 Refactoring 을 하는 책이죠.
      Refactoring을 배웠는데. 구체적으로 어떻게 step by step으로 패턴형태로 Refactroing을 하는지 가르켜 주는 서적입니다. 그래서 이 책을 보았다고 해서는 POSA를 배울수있는 가교 역할을 해주기는 힘듭니다.

      하지만 이미 가지고 계신 코드를 잘 다듬고, 몇번의 refactoring을 하다봄변, 나중에 비슷한 것을 만들때, 경험이 쌓여 코드레벨에서 좋은 구조를 만드실수 있을거라 봅니다.
      이런 부분에 관심이 있다면 보셨으면 좋겠습니다.

      응답
  4. 안녕하세요.
    스터디에 참여하고 싶은데 어떻게 하면 되나요?
    자세한 정보를 메일로 주시면 감사하겠습니다.

    응답
    • indigoguru골뱅이쥐메일.com으로 gmail 주소와 성함, 연락처등을 보내주세요 🙂
      그러시면 됩니다. 🙂

      응답
  5. 오호~ Refactoring to Patterns. 제가 읽었던 책중 가장 감명깊게 읽은 TOP10에 속합니다. 캔트백과 마킨파울러 워드 커밍햄.. 이 책을 떠올리면 많은 사람들이 생각납니다. 좋은 스터디 발판마련해서 후배들에게 값긴 경험을 물려주세요~^^ 파이팅합니다.

    응답
    • moova님 항상 응원해 주셔서 감사합니다.
      몸 상태가 좋아지시면 같이 패턴 라이팅을 해서 내년 4월에 일본 가자구요 🙂

      건강 꼭 회복하시구요!! moova님의 쾌유와 승리하는 삶을 기원합니다.
      병에서 승리하는 멋진 모습을 보여주세요!!

      아자! 아자! 화이팅!!!

      응답
  6. 이 책 정말 좋은 책인거 같아요.
    스터디 하신다니 좋은 결과 얻으시길 바랍니다..

    응답
  7. 혼자서 조용히 한번 읽어보면서 나중에 페턴에 대해서 이해도가 높아지면 꼭 다시 보자라고 다짐했던 책인데 스터디를 하신다니 급 참여하고 싶어지네요..

    POSA 스터디를 하고 있어서 나중에 기회가 되면 스터디에 꼭 참여하도록 하겠습니다… ^^

    응답
    • 아 예, 그러시군요. 🙂
      하시다가 궁금한 점이 있으면 연락주세요. 아는 범위에서는 도움을 드리겠습니다.
      그럼 🙂 힘내시구요!!

      다음 기회가 될때 뵐께요!! 건승을 빕니다.!!

      응답

손님 에 답글 남기기 응답 취소

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.

카테고리

Pattern, Seminar, Software Architecture, Study

태그

, , ,