> Java > java지도 시간 > 본문

Getter 체인에서 Null 검사를 적절하게 처리하는 방법: 선택 사항과 Demeter 법칙?

Susan Sarandon
풀어 주다: 2024-10-27 07:23:29
원래의
358명이 탐색했습니다.

How to Gracefully Handle Null Checks in Getter Chains: Optional vs. Law of Demeter?

Getter 호출 체인에서 Null 검사의 우아한 처리

소프트웨어 개발에서는 getter를 체인으로 연결해야 하는 상황에 직면하는 것이 일반적입니다. 다음과 같은 호출:

<code class="java">house.getFloor(0).getWall(WEST).getDoor().getDoorknob();</code>
로그인 후 복사

그러나 이러한 체인은 체인에 있는 객체 중 하나라도 null인 경우 NullPointerExceptions에 취약할 수 있습니다. 이를 방지하기 위해 개발자는 불필요한 복잡성과 코드 중복을 추가하여 긴 if-null 검사에 의존하는 경우가 많습니다.

대체 접근 방식

이 문제를 처리하기 위한 Java의 the-box 유틸리티 클래스에는 다음과 같은 우아한 대안이 있습니다.

데미터 위반의 법칙

@Erwin Bolwidt가 제안한 대로, LoD(Law of Demeter) 및 중첩된 속성에 직접 액세스:

<code class="java">if (house != null && house.floors != null && house.floors[0] != null && house.floors[0].walls != null && house.floors[0].walls[WEST] != null) ...</code>
로그인 후 복사

이 접근 방식은 캡슐화 원칙을 위반하고 코드 복잡성을 증가시키므로 권장되지 않습니다.

Java 8의 경우 선택 사항

Java 8에서는 null을 더 우아하게 처리할 수 있는 Optional 유형을 도입했습니다. 각 getter 호출을 Optional:

<code class="java">Optional.ofNullable(house)
        .map(house -> house.getFloor(0))
        .map(floor -> floor.getWall(WEST))
        .map(wall -> wall.getDoor())
        .map(door -> door.getDoorknob());</code>
로그인 후 복사

으로 래핑할 수 있습니다.

이 접근 방식은 명시적인 null 검사가 필요하지 않으며 보다 간결하고 표현력이 풍부한 구문을 제공합니다.

결론

게터 체인에서 null을 확인하기 위한 내장 유틸리티는 없지만 Optional 유형과 Demeter 법칙 위반은 유연하고 상황에 따른 솔루션을 제공합니다. 최선의 접근 방식을 선택하는 것은 특정 시나리오와 프로젝트의 설계 원칙에 따라 다릅니다.

위 내용은 Getter 체인에서 Null 검사를 적절하게 처리하는 방법: 선택 사항과 Demeter 법칙?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!