내 코드로 단위 테스트를 정기적으로 작성하는 습관을들이려고하지만 먼저 테스트 가능한 코드 를 작성하는 것이 중요하다는 것을 읽었습니다 . 이 질문 은 테스트 가능한 코드를 작성하는 SOLID 원칙에 대해 다루지 만 테스트 설계를 전혀 계획하지 않고 이러한 설계 원칙이 유리한지 (또는 적어도 유해하지 않은지) 알고 싶습니다. 명확하게하기 위해-필기 시험의 중요성을 이해합니다. 이것은 그들의 유용성에 대한 질문이 아닙니다.
혼란을 설명하기 위해이 질문에서 영감을 얻은 작품 에서 작가는 현재 시간을 확인하고 시간에 따라 일부 값을 반환하는 함수의 예를 제공합니다. 저자는 내부적으로 사용하는 데이터 (시간)를 생성하여 테스트하기가 어렵 기 때문에이 코드를 잘못된 코드로 지적합니다. 그러나 나에게는 시간을 논쟁으로 넘기는 것이 과잉 인 것 같습니다. 어떤 시점에서 값을 초기화해야하며 소비에 가장 가까운 이유는 무엇입니까? 또한, 내 마음 속에있는 방법의 목적은 현재 시간을 기준으로 일부 값을 반환하는 것입니다.이 값 은이 목적을 변경할 수 있음을 암시하는 매개 변수로 만듭니다. 이 질문과 다른 질문으로, 테스트 가능한 코드가 "더 나은"코드와 동의어인지 궁금해합니다.
테스트가없는 경우에도 테스트 가능한 코드 작성이 여전히 좋은 방법 입니까?
테스트 가능한 코드가 실제로 더 안정적입니까? 중복으로 제안되었습니다. 그러나 그 질문은 코드의 "안정성"에 관한 것이지만 가독성, 성능, 결합 등과 같은 다른 이유로 코드가 우수한 지에 대해 더 광범위하게 묻고 있습니다.
func(X)
반환 "Morning"
, 다음의 모든 발행 수 교체 func(X)
와 함께 "Morning"
프로그램을 변경되지 않습니다 (즉 호출이. func
값을 반환 이외의 아무것도하지 않음). Idempotency는 func(func(X)) == X
(유형이 정확하지 않음), 또는 func(X); func(X);
같은 부작용 을 수행하는 것과 같지만 func(X)
(여기서 부작용은 없음)