
346
3
부
부록
E.4
가장자리에서 검증하기
앞에서 불필요한 세부 사항으로 소스 코드를 알아보기 어렵게 만들고 싶지는 않다고 했다. 특
히, 도메인 모델 안에서 코드를 방어적으로 작성하고 싶지는 않다. 대신에 도메인 모델이나 유
스 케이스 핸들러에 요청이 도달하기 전에 요청이 올바른지 확인해야 한다. 이렇게 하면 코드
를 오랫동안 깔끔하고 유지보수가 쉬운 상태로 유지할 수 있다. 이런 방식을 종종
시스템 가장
자리에서 검증하기
라고 한다.
하지만 코드를 깔끔하게 하고 끝없는 어서션 검사가 없게 하는 것에 더해서, 시스템 안에서 돌
아다니는 게 올바르지 않은 데이터는 마치 시한폭탄과 같다는 점을 기억하라. 더 깊이 이 폭탄
이 도달할수록 시스템이 더 크게 망가지고 이런 경우에 대응할 수 있는 도구의 수도 줄어든다.
8
장에서 메시지 버스가 횡단 관심사
cross
-
cutting
concern
를 처리하는 훌륭한 장소라고 말했다. 검증
은 이런 횡단 관심사의 완벽한 예다. 다음은 버스를 검증을 수행하게 바꾸는 방법을 보여준다.
검증
class MessageBus:
def handle_message(self, name: str, body: str):
try:
message_type = next(mt for mt in EVENT_HANDLERS if mt.__name__ == name) ...