Rumah  >  Artikel  >  Java  >  Cara Mengendalikan Cek Null dengan Anggun dalam Rantaian Getter: Pilihan lwn. Hukum Demeter?

Cara Mengendalikan Cek Null dengan Anggun dalam Rantaian Getter: Pilihan lwn. Hukum Demeter?

Susan Sarandon
Susan Sarandonasal
2024-10-27 07:23:29352semak imbas

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

Pengendalian Elegan Cek Null dalam Rangkaian Panggilan Getter

Dalam pembangunan perisian, adalah perkara biasa untuk menghadapi situasi di mana anda perlu membuat rantai getter panggilan, seperti:

<code class="java">house.getFloor(0).getWall(WEST).getDoor().getDoorknob();</code>

Walau bagaimanapun, rantai tersebut boleh terdedah kepada NullPointerExceptions jika mana-mana objek di sepanjang rantai itu adalah batal. Untuk mengelakkan perkara ini, pembangun sering menggunakan semakan if-null yang panjang, menambahkan kerumitan yang tidak perlu dan pertindihan kod.

Pendekatan Alternatif

Walaupun tidak ada out-of- kelas utiliti the-box di Java untuk menangani isu ini, terdapat alternatif yang elegan:

Undang-undang Pelanggaran Demeter

Seperti yang dicadangkan oleh @Erwin Bolwidt, anda boleh melanggar Law of Demeter (LoD) dan akses terus sifat bersarang:

<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>

Pendekatan ini tidak digalakkan kerana ia melanggar prinsip enkapsulasi dan meningkatkan kerumitan kod.

Pilihan dengan Java 8

Java 8 memperkenalkan jenis Pilihan, yang membolehkan anda mengendalikan null dengan lebih elegan. Anda boleh membungkus setiap panggilan getter dalam Pilihan:

<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>

Pendekatan ini menghapuskan keperluan untuk semakan nol yang jelas dan menyediakan sintaks yang lebih ringkas dan ekspresif.

Kesimpulan

Walaupun tiada utiliti terbina dalam untuk menyemak nol dalam rantai pengambil, jenis Pilihan dan pelanggaran Undang-undang Demeter menawarkan penyelesaian yang fleksibel dan bergantung kepada konteks. Memilih pendekatan terbaik bergantung pada senario tertentu dan prinsip reka bentuk projek.

Atas ialah kandungan terperinci Cara Mengendalikan Cek Null dengan Anggun dalam Rantaian Getter: Pilihan lwn. Hukum Demeter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn