본문 바로가기
세미나,강의 정리

[우아한테크세미나] 190425 TDD 리팩토링 by 자바지기 박재성님 정리

by 스르나 2021. 7. 6.

https://youtu.be/bIeqAlmNRrA?list=PLWULX930b66AKch7aJm_CpcnDiz2hQwaf 

 

 

TDD하기 쉬운코드와 어려운 코드를 구분하는 눈
어려운 코드를 쉬운코드로 변경할 수 있는 감

목적의식이 있는 연습이 필요함 -> 무작정 많이는 아니야

의식적인 연습의 7가지 원칙
1. 효과적인 훈련기법이 수립되어 있는 기술 연마
2. 개인의 컴포트 존을 벗어난 지점에서 진행, 자신의 현재 능력을 살짝 넘어사는 작업을 지속적으로 시도
3. 명확하고 구체적인 목표를 가지고 진행
4. 신중하고 계획적이다. 즉, 개인이 온전히 집중하고 의식적으로 행동할 것을 요구
5. 피드백과 피드백에 따른 행동 변경을 수반
6. 효과적인 심적 표상을 만들어 내는  한편으로 심적 표상에 의존
7. 기존에 습득한 기술의 특정 부분을 집중적으로 개선함으로써 발전시키고, 수정하는 과정을 수반


TDD, 리팩토링 == 운동  -> 평생 연습하겠다는 마음가짐

클린코드는 아무리 경력이 쌓여도 어려운 것

연습은 장난감 프로젝트로 해야한다 -> 혼자해서 리듬이 끊기는 것을 방지해야한다 -> 꾸준한 연습이 가능해야함

 

총 5 단계
1. 단위테스트 연습
주로 사용하는 자바 API를 이용해서 단위테스트를 만드는 연습을 하는 것으로 시작 -> api에 대한 이해도, 단위테스트를 만드는 이해도 업
input, output이 명확한 api로부터 연습

2. TDD 연습
간단하고, 익숙한 것으로 연습 -> 작은 코드도 연습할 것이 충분하다.
웹, 모바일 같은 것들은 테스트하기 힘들어(db같은 것들과의 관계)
사이클(실패->패스->리팩토링)을 반드시 지킬 것

3. 메소드 분리 리팩토링
테스트 코드를 고치지말고 분리하는 연습(인덴트indent를 줄이는 연습)
인덴트를 1 줄이는 것에 목숨을 걸어라 -> 희열이 느껴질 것
메소드가 1가지 일만 하도록 구현하기
메소드의 라인을 줄이는 연습
한번에 모든 원칙을 지키면서 리팩토링하려고 연습하지 마라

클래스 또한 분리하는 연습이 필요함 
-> 대표적으로 원시값을 클래스로 포장하는 것, 컬렉션을 포장하는 클래스, 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.


4. 메소드, 클래스 분리 연습이 어느정도 됐다면 장난감 프로젝트의 난이도를 올려라
-> 게임같이 요구사항이 명확한 것 단, 콘솔ui로 할것, 이때도 db같은 것에 영향을 받지 않게끔

5. 의존관계가 있는 것으로 연습
앞단계가 연습이 충분히 됐다면 테스트하기 어려운 것을 찾는 감이 생겼을 것