제품의 요구사항은 자주 바뀔 수 있지만, 그 근본적인 아이디어는 보통 천천히 변합니다. 이는 흥미로운 통찰로 이어집니다. 만약 우리가 제품의 근본적인 아이디어와 일치하는 코드를 작성한다면, 그 코드는 미래의 제품 변경에도 살아남을 가능성이 더 높습니다.
Posts for: #TotT
TotT: SMURF - 테스트 피라미드를 넘어서
테스트 피라미드는 테스트 스위트의 발전을 안내하는 정석적인 경험 법칙(heuristic)입니다. 이는 단순한 메시지를 전달합니다. 통합 테스트보다 더 많은 단위 테스트를 선호하고, 엔드 투 엔드(end-to-end) 테스트보다 더 많은 통합 테스트를 선호하라는 것입니다.
TotT: Else 문의 미묘한 차이
함수가 if 문에서 일찍 종료(return)되는 경우, else 절을 사용하는 것과 사용하지 않는 것은 동작상으로는 동일합니다. 하지만 else 절과 가드 절(guard clause, else 가 없는 형태)을 적절히 사용하면 코드를 읽는 사람에게 의도를 더 명확하게 전달할 수 있습니다.
TotT: 함수 가독성 향상을 위해 추상화를 활용하세요
단위 테스트를 작성할 때, 테스트 대상 코드가 의존하는 타입을 목(mock) 처리하는 것은 일반적인 관행입니다. 하지만, 당신이 소유하지 않은 타입(types you don’t own)을 목 처리하는 것은 거의 항상 피해야 합니다.
TotT: 관심사 분리? 끝!
단위 테스트를 작성할 때, 테스트 대상 코드가 의존하는 타입을 목(mock) 처리하는 것은 일반적인 관행입니다. 하지만, 당신이 소유하지 않은 타입(types you don’t own)을 목 처리하는 것은 거의 항상 피해야 합니다.
TotT: 당신이 소유하지 않은 타입은 목킹(Mock)하지 마세요
단위 테스트를 작성할 때, 테스트 대상 코드가 의존하는 타입을 목(mock) 처리하는 것은 일반적인 관행입니다. 하지만, 당신이 소유하지 않은 타입(types you don’t own)을 목 처리하는 것은 거의 항상 피해야 합니다.
TotT: 테스트 데이터를 깔끔하게 만드세요
만약 당신이 과속 운전을 한다면(원인), 당신은 교통 딱지를 받게 될 것입니다(결과).
TotT: 상태를 변경하는 메서드 호출만 검증하세요
일반적으로 상태를 변경하지 않는 메서드가 호출되었는지 검증하는 것은 피해야 합니다.
TotT: 중첩 줄이기, 복잡도 낮추기
과도하게 중첩된 코드는 가독성을 해치고 오류를 발생시키기 쉽습니다.
TotT: 원인과 결과를 명확하게 유지하세요
만약 당신이 과속 운전을 한다면(원인), 당신은 교통 딱지를 받게 될 것입니다(결과).