CodeSOD: 연결 상태
Frederick A.는 ConferenceService 클래스의 IsCalling 메서드에서 null 검사 문제를 공유합니다. 이 메서드는 잠재적으로 null인 객체 체인인 m_ConnectionService.Core.State.IsWebRTCConnected에 접근하여 웹 컨퍼런스가 활성 상태인지 확인하려고 합니다. 원래 코드는 잠재적인 NullReferenceException을 처리하기 위해 try/catch 블록을 사용하며, 체인의 일부라도 null이면 false를 반환합니다. 이 접근 방식은 초기화되지 않은 객체의 근본적인 문제를 효과적으로 숨깁니다. Frederick은 C# null 병합 연산자(?.)를 직접적인 수정으로 사용할 것을 제안하며, 이는 다음과 같이 체인의 객체가 null이면 간결하게 false를 반환합니다: m_ConnectionService?.Core?.State?.IsWebRTCConnected ?? false. 이것은 기능적인 해결책이지만, 작성자는 이것이 더 깊은 아키텍처 문제에 대한 근본적인 수정은 아니라고 주장합니다. 핵심 문제는 연결 상태가 관리되는 방식에 있으며, 이는 적절한 상태 머신으로 처리되어야 한다고 제안합니다. 중요한 상태 정보에 대해 부울 플래그를 사용하는 깊은 객체 체인에 의존하는 것은 잘못된 설계 선택을 나타냅니다. 완전한 상태 머신 구현이 더 강력한 해결책이 될 것이지만, 작성자는 상당한 리팩토링이 필요하다는 것을 인정합니다. 그러나 이 예시는 개발자들이 이러한 null 검사 복잡성을 피하기 위해 상태 관리 전략을 신중하게 고려하도록 강력하게 상기시켜 줍니다.