9
ส่งคืน ImmutableMap หรือ Map ดีกว่าไหม
สมมติว่าผมเขียนวิธีการที่ควรจะกลับเป็นแผนที่ ตัวอย่างเช่น: public Map<String, Integer> foo() { return new HashMap<String, Integer>(); } หลังจากคิดทบทวนอยู่พักหนึ่งฉันก็ตัดสินใจว่าไม่มีเหตุผลที่จะแก้ไขแผนที่นี้เมื่อสร้างขึ้นแล้ว ดังนั้นผมอยากจะกลับImmutableMap public Map<String, Integer> foo() { return ImmutableMap.of(); } ฉันควรปล่อยประเภทการส่งคืนเป็นแผนที่ทั่วไปหรือฉันควรระบุว่าฉันส่งคืน ImmutableMap? จากด้านหนึ่งนี่คือสาเหตุที่สร้างอินเทอร์เฟซสำหรับ; เพื่อซ่อนรายละเอียดการใช้งาน ในทางกลับกันถ้าฉันปล่อยไว้แบบนี้นักพัฒนารายอื่นอาจพลาดข้อเท็จจริงที่ว่าวัตถุนี้ไม่เปลี่ยนรูป ดังนั้นฉันจะไม่บรรลุเป้าหมายหลักของวัตถุที่ไม่เปลี่ยนรูป เพื่อทำให้โค้ดชัดเจนยิ่งขึ้นโดยการลดจำนวนวัตถุที่เปลี่ยนแปลงได้ แม้จะแย่ที่สุดหลังจากนั้นสักครู่อาจมีคนพยายามเปลี่ยนอ็อบเจ็กต์นี้และจะส่งผลให้เกิดข้อผิดพลาดรันไทม์ (คอมไพเลอร์จะไม่เตือนเกี่ยวกับมัน)