공정하게, 그는 그 주장에 "재미있다"고 덧붙였다.
오늘날까지 나는 "명사와 동사"접근 방식을 사용하여 시스템을 모델링하는 것으로 시작하는 경향이 있지만, TDD가이 접근 방식이 잘못된 것에 초점을 맞추고 있음을 몇 년 동안 가르쳐 왔습니다. 이런 점에서 블로거는 요점을 가지고 있습니다. 그러나 나는 그것이 우리의 마음이 작동하는 방식이 아니라 잘못에 대한 접근법인지 확실하지 않습니다.
여기서 약간의 도전을 원한다면 읽기를 중단하고 영어를 사용하여 독점 게임을 모델링 한 다음 다시 여기로 오십시오.
보드, 공간, 카드, 주사위, 조각과 같이 우리가 많은 것들과 상호 작용하는 대상을 즉시 보려는 유혹이있을 것입니다. 그러나 그것은 대부분의 논리가가는 곳이 아닙니다. 이러한 개체의 대부분은 완전히 바보입니다. 원한다면 데이터.
그러나 테스트를 시작하자마자 어떤 게임에서 어떤 객체가 가장 중요한지 알 수 있습니다. 규칙.
처음 게임을했을 때 한 번 읽었고 분쟁이있을 때까지 다시는 상호 작용하지 않는 작은 종이 조각을 기억하십니까? 전산화 된 버전은 그런 식으로 작동하지 않습니다. 플레이어가 시도하는 모든 일, 컴퓨터는 규칙을 참고하여 규칙이 허용되는지 여부를 확인합니다.
당신이 그것에 대해 생각할 때, 당신은 같은 일을하지만 종이 기반 규칙을 읽는 데 시간이 걸리고 뇌에 합리적인 캐싱 시스템이 있기 때문에 머리의 규칙을 참조하십시오. 컴퓨터는 규칙을 다시 쉽게 읽을 수있을 것입니다. 데이터베이스에 저장되어 있지 않으면 캐시 할 수도 있습니다.
이것이 바로 TDD가 실제로 드라이빙 디자인에 인기가있는 이유입니다. 사고 과정을 올바른 장소로 빠르게 진행시키는 경향이 있기 때문에 :
독점 게임에 대한 몇 가지 테스트를 작성한다고 생각할 때. 세트를보고 객체를 찾으려고 할 수 있습니다. 우리는이 조각들을 가지고 있습니다. 그에 대한 몇 가지 테스트를 작성하겠습니다.
아마도 기본 클래스 MonopolyPiece를 가질 것이고 각 유형의 조각은 그로부터 파생 될 것입니다. DogPiece부터 시작하겠습니다. 첫 번째 테스트 ... 아. 실제로 여기에는 논리가 없습니다. 예, 각 조각이 다르게 그려 지므로 DogDrawer가 필요할 수 있지만 게임을 살피는 동안 화면에 "D"를 쓰고 싶습니다. 마지막에 UI를 꾸미겠습니다.
테스트 할 실제 로직을 찾아 보자. 이 집들과 호텔은 많이 있지만 테스트는 필요하지 않습니다. 돈 아니 재산 카드. 등등. 보드조차 상태 머신 일 뿐이며 로직을 포함하지 않습니다.
당신은 당신의 손에 세 가지가 남아 있음을 빨리 알게 될 것입니다. 기회와 커뮤니티 상자 카드, 한 쌍의 주사위와 일련의 규칙. 이것들은 디자인과 테스트에 중요한 부분이 될 것입니다.
명사와 동사를 쓸 때 나오는 것이 보입니까?
실제로 Robert Martin의 Agile Principles Patterns and Practices 에는 TDD를 사용하여 Bowling Score Card 앱을 살려내고 클래스가 귀찮은 가치가 없다고 생각한 모든 종류의 물건을 찾으려고 시도 하는 훌륭한 예가 있습니다.