본문 바로가기

프로그래밍 실력쌓기

Design Pattern, Refactoring, TDD, UML





Design Pattern, Refactoring, TDD, UML



1. 공통적으로 알아야 할 사항



a. 디자인 패턴 다 외우실 필요는 없습니다. 객체지향적 사고의 유연함과 패턴의 종류(생성, 상태변화등등..)를 알아두는게 중요합니다. 어차피 답이 있는 부분이 아니기 때문에 객체지향의 궁극적인 목표인 인터페이스! 에 대해서만 이해하시면 됩니다.



b. 책 읽기. 모르는 부분이 있으면 일단 그냥 넘어가기.. 중요합니다. 계속 이해가 안되는걸 붙들고 있어봤자 아무 소용없습니다. 하기도 싫어지구요.



c. 객체 지향 문법 한가지는 알아야 합니다. 시작 하시기엔 C#이 편하겠고 레퍼런스가 많기로는 JAVA가 좋습니다.



d. UML 다 보다간 주화입마에 빠질수 있으니 상속, 위임을 어떻게 표현하는지만 알면 될거 같습니다. 시퀀스 다이어그램(?) 이런거는 그냥 보면 알수 있으니깐..이라고 생각하고 패스..



e. 테스트 도구 각 언어에 해당하는 테스트 도구가 있습니다. 한번 써보세요.. 간단 합니다.


int result = add(1, 1);

assertThat(result, 2);


이런 식입니다. 내가 만든 add 함수 한번 호출하고 결과가 제대로 나왔는지 확인 좀 불안하면 add함수에 여러가지 파라미터를 넣고 더 많이 테스트하기.




2. 추천도서


a. REFACTORING - 마틴 파울러 필독입니다. 리팩토링을 어떻게 하는건지 자세히 보여줍니다. 그냥 이건 무조건 있어야 되요..리팩토링이 미숙한 부하직원이 있다면 이책에서 찾아주고 그대로 하라고 하면 됩니다.



b. 테스트 주도 개발 - 켄트벡이게 TDD죠..그냥 이 책만 봤다간 주화입마에 빠집니다. 대충 보고 넘기세요..



c. 레거시 코드 활용 전략아~~ 이 책은 신이 주신 책입니다. 위(테스트 주도 개발) 책을 대충 한번 보시고 이책을 주의깊게 보세요.우리는 항상 코드를 생성하는것보다 기존코드를 더 많이 봅니다.



d. 버그 패턴과 자바 - 에릭엘런참 잼있습니다. 이책 이런건 하지 말자 이런건데... 서슴없이 악을 행하는 개발자에게 전해 주십시요~~



e. Java 언어로 배우는 디자인 패턴 입문 - YUKI HIROSHI설명이 친절합니다.... 너무 너무 너무 너무 친절해요....이 책 첫부분에 UML에 대해서 설명이 나옵니다. 그정도만 알면 어느 책이든 볼수 있습니다.UML책 사지 마시고 이걸보세요...



f. GOF 디자인 패턴! 이렇게 활용한다 - 장세찬좀 설명이 어렵기는 한데 분류가 잘 되있습니다.. 위 책과 병행해서 보세요..



g. 켄트벡의 구현패턴 - 켄트벡이건 그냥 심심풀이로 보세요.. 다 보고나면 머리가 멍해집니다. 내가 뭘 읽은거지 하면서 말이죠..



h. 초보자를 위한 Extreme 프로그래밍 - 베어드XP에 대해서 자세히 나옵니다. 하지만 약간 설명이 좀 부족합니다...저 초보자를 위한이란 뜻은 XP 초보자를 말합니다. 우습게 봤다간 큰코 다쳐요.. ^^



i. Head First Software DevelopmentXP 동화책이라고나 할까요 스토리가 있는 책입니다. 잼있어요..개인적으로 Head First 씨리즈를 모아볼까 합니다. 프로그래머를 위한 동화책 이에요..월트 디즈니 같은.... 이해하기 아주 쉽습니다..





3. 공부하는 순서



a. 리팩토링, 디자인 패턴, UML인터페이스, 추상화, 상속, 위임 뭐가 뭔지 모르면 고대로 눈뜬채로 침을 흘리게 됩니다.이런것들을 공부하면서 우리는 TDD로 다가갈수 있습니다.



b. 테스트 주도 개발, 레거시 코드 활용진짜 보면서 참 어렵다고 생각했습니다.보통 코드 어떻게 짜십니까? 먼저 구현하고(클래스 만들고) 다 만들면 가져다(객체생성하고 멤버함수 호출하고) 쓰죠?이건 반대입니다. 먼저 쓰고 나중에 구현합니다. 꼭 잊지 마세요..이둘의 차이가 얼마나 큰지 아시게 되면 구원받았다고 생각이 드실겁니다.



c. XP (익스트림 프로그래밍)짝프로그래밍으로 알고 계신분들도 있으실텐데 프로그래밍 하는방법에 대한게 아닙니다..적용가능한 모든 개발 프로젝트에 관한 방법이 나와있습니다.이것까지 끝나면 구원받고 천국갈수 있어요...




4. 마지막으로


책을 보다보면 리팩토링 할때도 테스트 할수 있는(TDD) 방법이 있어야 한다고 나오구요..XP에도 TDD가 나오고 TDD 보다보면 리팩토링을 할줄 알아야 하고 서로 물고 물립니다.


모르겠으면 다른책도 보고 다시 돌아와서 또 보기도 하고 그래야 할수도 있으니모르면 그냥 패스 하시고 적당히 넘어가는 자비도 베풀어주세요..본인에게 말이죠..





p.s 아주 오래전에 쓴 글인데 저 위에 나열한 책들이 지금도 파는지는 모르겠네요..