나에게서 TDD에 대한 또 다른 질문. 나는 TDD에 관한 몇 가지 기사와 책의 장을 읽었으며 TDD를 사용해야하는 이유와 간단한 예제를 이해할 수 있지만, 현실 세계에서 이것을 시도 할 때 나는 매우 쉽게 붙어있는 것처럼 보인다.TDD Spider Solitaire
Windows Vista와 함께 제공되는 잘 알려진 Spider Solitaire를 프로그래밍하려면 간단한 TDD 예제를 제공 할 수 있습니까? 어떤 테스트를 시작할 것인가?
나에게서 TDD에 대한 또 다른 질문. 나는 TDD에 관한 몇 가지 기사와 책의 장을 읽었으며 TDD를 사용해야하는 이유와 간단한 예제를 이해할 수 있지만, 현실 세계에서 이것을 시도 할 때 나는 매우 쉽게 붙어있는 것처럼 보인다.TDD Spider Solitaire
Windows Vista와 함께 제공되는 잘 알려진 Spider Solitaire를 프로그래밍하려면 간단한 TDD 예제를 제공 할 수 있습니까? 어떤 테스트를 시작할 것인가?
음을 수행 스파이더 카드 놀이를위한 TDD는 기본적으로 그런 게임을 어떻게 디자인해야 하는지를 묻습니다. 테스트는 설계 결정의 결과 일 것입니다. 솔리테어는 단순한 게임이지만 처음부터 그러한 게임을 디자인하는 것은 결코 쉬운 일이 아닙니다 (여러 가지 방법이 있습니다).
숫자 추측 게임 (시스템에서 임의의 숫자를 생성하고 가능한 한 적은 횟수 만 추측하려고하는 경우)처럼 훨씬 간단하게 설계를 시작하는 것이 좋습니다. 이러한 간단한 게임의
일부 기능은 다음과 같습니다
의 수를 계산 조잡한 예제이지만 쉽게 코드화 할 수 있습니다.)
secret_number >= 1 && secret_number <= 10
을 확인하십시오.number > secret_number
일 때 "HIGH"를 반환하고 number < secret_number
일 경우 "LOW"를 반환하고 number == secret_number
일 때 "WIN"을 반환합니까?이것은 매우 대략적인 개요이며 결코 완료되지 않습니다. 그러나 영어 설명을 보면 코드 예제가 더욱 장황해질 것입니다. 더 구체적인 답변을 원한다면 좀 더 구체적인 질문을해야한다고 생각합니다.
카드 놀이에는 카드가 관련되어 있습니다.
그래서 카드 클래스를 생각해보십시오. 개별 Card 객체에 대한 몇 가지 테스트를 작성합니다. 카드 클래스를 작성하여 테스트를 통과하십시오.
레이아웃을 뒤섞어 다루는 데크가 필요합니다. 당신은 Deck 클래스와 셔플 알고리즘을 생각하고 처리 상태를 어떻게 유지하는지 생각해보십시오. 셔플하고 거래하는 덱에 대한 몇 가지 테스트를 작성합니다. 시험에 합격하기 위해 덱 클래스를 작성합니다. [참고로, 실제로 무작위가 아닌 모의 난수 생성기가 필요합니다.]
솔리테어 게임에는 공백과 카드가있는 레이아웃이 포함됩니다. 규칙의 일부 빈 공간 (왕만 또는 에이스 전용). Solitaire 게임에는 때로는 갑판의 잔존물이 포함됩니다.
그래서 카드 용 공백이있는 레이아웃 클래스를 생각해보십시오. 레이아웃에 대한 몇 가지 테스트를 작성하고 다양한 카드를 넣습니다. 테스트를 통과하기 위해 Layout 클래스를 작성합니다.
그런 다음 레이아웃에서 어떤 카드를 이동할 수 있는지에 대한 규칙이 있습니다. 전체 스택, 하위 스택, 최고 카드 등. AllowedMove 또는 GameState 또는 이러한 클래스가 있습니다. 같은 훈련. 대략하는 일을 정의하고, 시험을 치고, 반을 끝내십시오.
사용자 인터페이스 및 표시 장치가 있습니다. 드릴은 동일합니다.
대략적인 클래스입니다.
테스트를 정의하십시오.
클래스를 마칩니다.
는
나는 OO Design에 관한 책에서 자세하게 다루 등.
먼저 엔진과 GUI를 분리해야합니다 (). GUI를 TDDing하는 것은 가장 어려운 부분이므로 가능한 한 GUI 레이어를 얇게 유지해야합니다. "겸손한 대화 상자"에 대한 Google은 tddui list on Yahoo! groups을 읽습니다.
엔진 계층은 게임 규칙을 구현합니다.
I'me이 규칙에 대한 확신이 점점하지만이 얻을 정도로 생각 아이디어.
마지막으로, 가장 간단한 테스트로 시작하거나, 새로운 테스트 아이디어가있을 때 목록에 테스트를 추가하거나 자신이 질문하는 것을 발견했을 때 어떻게됩니까?
"secret_number> = 1"이 아니어야합니까? – guerda