코드가 깔끔한 길----타산의 옥 재구성 가능: 신분증 번호 해석, 검증 도구(첫날)

1852 단어 C#TDD
먼저 원작자의 코드에 감사 드립니다.만약 판권 문제가 있으면 알려 주십시오.
원 코드는 나에게 좋은 출발점을 주었다. 그래, 이 코드들은 모두 옥이야. 나는 여기서 단지 다시 생각해 볼 뿐이야.
그럼에도 불구하고 재구성 과정은 여전히 번거롭고 문장이 길지도 모르며 매번 재구성할 때마다 모든 코드를 한 번씩 표시해야 한다.
알기는 쉬워도 실행하기는 어렵다. 재구성은 동태적인 과정이기 때문에 쉽게 나타나지 않는다. 인내심을 가지고 천천히 보아야 한다.

1 - C# 코드로 전환하여 첫 번째 테스트 추가


네, 이것은 반드시 필요한 것이 아닙니다. 제 탓이라고 할 수 있습니다. 자바를 할 줄 모릅니다.하지만 너도 일종의 재구성 장면이라고 볼 수 있지 않니?
변경된 코드는 더 이상 넣지 않습니다. 비교적 간단합니다. C#와 자바의 차이와 관련이 있기 때문에 Social ID를 남겨 두십시오.cs.하지만 내 테스트 코드는 매우 중요하다.아마도 많은 사람들이 나의 테스트 프레임워크(Machine.Specification)와 코드 스타일을 비난할 것이다.전자는 앞으로 MSpec과 BDD를 많이 소개해서 여러분들이 익숙해지도록 하겠습니다. 후자는 여러분들이 적응하길 바랄 뿐입니다.

==> 쓰기 테스트


첫 번째 테스트 코드: 정확한 입력으로 신분증을 만들 때 정확한 생일을 받을 수 있어야 한다.

namespace Skight.eLiteWeb.Domain.Specs
{
    public class  when_create_social_id_with_proper_input
    {
        private Because of = () => subject = new SocialID("43010319801120753");

        private It should_get_birth_date_correctly =
            () => subject.getBirthDate().ShouldEqual(new DateTime(1980, 11, 20));
        private static SocialID subject;
    }
}

4

==>첫 번째 테스트 실행, 실패:)

재미있는 것은 C#문법번역을 해결한 후에 제 첫 번째 테스트는 실패했습니다.

==> 재구성


원래 같은 문법인 Substring처럼 보이지만 두 번째 매개 변수는 다른 의미를 가진다.더 이상 경전할 수 없는 장면이다. 테스트는 이 과정을 순조롭게 할 수 있다.
4
private String getBirthDayPart() {
		return this.cardNumber.substring(6, 14);
	}
으로 변경
private String getBirthDayPart()
{
return this.cardNumber.Substring(6, 8);
	}

==> 재테스트


==>첫 번째 교체 종료, 휴식.


자, 단계적인 성과, 하나의 테스트/행위는 하나의 이정표로 표시할 수 있습니다. 오늘은 여기까지입니다. 당신의 지지는 내일 계속하도록 하겠습니다.
오, 기다리지 마세요.마지막 걸음, 확실히 가장 중요한 걸음.우리 고객(이 상황에서 내 고객은 다른 개발자다. 그래, 고급 프로그래머의 고객은 다른 중급, 초급 프로그래머, 생각을 바꿔라)에게 주는 테스트/기능 보고서는 다음과 같다.

좋은 웹페이지 즐겨찾기