본문 바로가기
SW

테스트 주도 개발(Test-Driven Development:By Example) - 3부 : 테스트 주도 개발의 패턴 (28장)

by 라꾸스떼(YR) 2020. 2. 16.
반응형

[28장] 초록 막대 패턴

코드가 테스트를 통과하게 만들기 위해 이 패턴을 사용하라.

 

<가짜로 구현하기(진짜로 만들기 전까지만)>

실패하는 테스트를 만든 후 첫 번째 구현은 어떻게 하는 게 좋을까? 상수를 반환하게 하라. 일단 테스트가 통과하면 단계적으로 상수를 변수를 사용하는 수식으로 변형한다.

 

<가짜로 구현하기를 강력하게 만드는 두 가지 효과>

-심리학적:확신을 갖고 거기부터 리팩토링해 갈 수 있다.

-범위 조절:하나의 구체적인 예에서 시작해서 일반화하게 되면, 쓰잘데기 없는 고민으로 때 이르게 혼동하는 일을 예방할 수 있다.

 

<삼각측량>

추상화 과정을 테스트로 주도할 때 어떻게 최대한 보수적으로 할 수 있겠는가? 오로지 예가 두 개 이상일 때에만 추상화를 하라.

삼각측량이 매력적인 이유는 그 규칙이 매우 명확하기 때문이다.

나는 어떤 계산을 어떻게 해야 올바르게 추상화할 것인지에 대해 정말 감잡기 어려울 때만 삼각측량을 사용한다. 그 외의 경우, 명백한 구현이나 가짜로 구현하기에 의존한다.

 

<명백한 구현>

단순한 연산들은 어떻게 구현하는가? 그냥 구현해 버려라

가짜로 구현하기와 삼각측량은 눈곱만큼 작은 발걸음이다. 만약 빨간 막대를 보고 놀란다면 그제서야 좀더 작은 발걸음으로 옮겨갈 것이다. 가짜로 구현하기와 삼각측량의 어중간한 성질에 특별한 미덕이 있는 것은 아니다. 뭘 타이핑해야 할지 알고, 그걸 재빨리 할 수 있다면 그냥 해버려라.

‘제대로 동작하는’을 푸는 동시에 ‘깨끗한 코드’를 해결하려는 것은 한번에 하기에는 너무 많은 일일 수 있다. 그렇게 되면 우선 ‘제대로 동작하는’으로 되돌아 가서 그걸 해결하고, 그 후에 ‘깨끗한 코드’를 느긋하게 해결하도록 하라.

 

<하나에서 여럿으로>

객체 컬렉션(collection)을 다루는 연산은 어떻게 구현하나? 일단은 컬렉션없이 구현하고 그 다음에 컬렉션을 사용하게 한다.

반응형

댓글