4. 모나드
C#과 Kotlin에서 ?. 연산자는 null일 수 있는 값에 대해 프로퍼티를 조회하거나 메서드를 호출하는 방법입니다. 수신자가 null이면 전체 표현식은 null입니다. 그렇지 않으면 기저의 null이 아닌 값이 호출을 받습니다. ?.의 사용은 연쇄적으로 이어질 수 있으며, 이 경우 첫 번째 null 결과가 조회 체인을 종료시킵니다. 이처럼 널 검사를 연쇄하는 것은 깊이 중첩된 if를 작성하고 유지 관리하는 것보다 훨씬 편리합니다.
마찬가지로, 예외는 오류 코드를 수동으로 확인하고 전파하는 것보다 훨씬 더 편리합니다. 동시에, 로깅은 각 함수가 로그 결과와 반환값을 모두 반환하도록 하는 것보다는 전용 로깅 프레임워크를 갖추는 것으로 가장 쉽게 달성할 수 있습니다. 연쇄된 null 검사와 예외는 일반적으로 언어 설계자가 이러한 사용 사례를 미리 고려할 것을 요구하는 반면, 로깅 프레임워크는 일반적으로 부수 효과를 활용하여 로그를 남기는 코드와 로그의 누적을 분리합니다.