[클린 코드] 클린 코드 내용 정리 3
오류처리
오류 코드 보다 예외를 사용하라.
오류가 발생했을 때 예외를 던지는 편이 호출자 코드가 더 깜끔해집니다. 논리가 오류 처리 코드와 뒤섞이지 않기 때문입니다.
Try-Catch-Finally문 부터 작성하라
예외가 발생할 것으로 예상되는 코드에서는 try-catch-finally문으로 시작하는 편이 낫습니다. 그러면 try블럭에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하가 쉬워집니다.
저자는 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장하고있습니다. 그러면 자연스럽게 try블록의 트랙잭션 범위부터 구현하게 되므로 범위내에서 트랜잭션 본질을 유지하기 쉽기 때문입니다.
예외에 의미를 제공하라
예외를 던질 때 전후 상황을 충분히 덧붙이면 오류가 발생한 원인과 위치를 찾기 쉽습니다. 오류 메시지에 실패한 연산 이름, 유형 등 정보를 담아 예외와 함께 던지면 좋습니다.
Null을 반환하지마라
null을 반환하면 한 줄 건너 하나씩 null을 확인하는 코드로 가득한 앱이 됩니다. 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘기게 됩니다.
단위 테스트
TDD 법칙 세 가지
1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.
2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.
3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
깨끗한 테스트 코드 유지하기
테스트 코드는 실제 코드 못지 않게 중요합니다. 테스트 코드는 사고와 설계와 주의가 필요합니다. 그래서 실제 코드 못지 않게 깨끗하게 짜야합니다.
테스트는 유연성, 유지보수성, 재사용성을 제공합니다. 테스트 케이스가 존재하면 설계가 모호하고 엉만인 코드라도 별다른 우려 없이 변경할 수 있으며 오히려 안심하고 아키텍처와 설계를 개선할 수 있습니다.
실제 코드를 점검하는 자동화된 단위 테스트 슈트는 설계와 아키텍처를 최대한 깨끗하게 보존하는 열쇠입니다. 테스트 코드가 지저분하면 코드를 변경하는 능력이 떨어지게 되며 코드 구조 개선하는 능력도 떨어지게 됩니다.
깨끗한 테스트 코드
깨끗한 테스트 코드는 가독성이 가장 중요합니다. 가독성은 실제 코드보다 테스트 코드에 더더욱 중요합니다. 가독성을 높이려면 명료성,단숭성,풍부한 표현력이 필요합니다.
F.I.R.S.T
깨끗한 테스트는 다섯 가지 규칙을 따릅니다.
Fast: 테스트는 빨라야 합니다.
Independent: 각 테스트는 서로 의존하면 안됩니다.
Repeatable: 테스트는 어떤 환경에서도 반복 가능해야 합니다.
Self-Validating: 테스트는 Bool 값으로 결과를 내야합니다. 성공 or 실패
Timely: 테스트는 적시에 작성해야 합니다.
책에서 저자는 테스트 코드에 중요성을 상당히 강조하고 있는거 같습니다.책 한 권을 할애해도 모자랄 만큼의 주제라고 표현할 만큼 많은 내용이 있습니다.
테스트 코드를 짜는 연습을 좀더 해야겠습니다