คำถามติดแท็ก immutable-collections

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

1
ImmutableSortedDictionary ช่วงแจงนับโดยคีย์
ผมอ่านเกี่ยวกับ C # 's ImmutableSortedDictionaryในSystem.Collections.Immutableและความคิดเกี่ยวกับวิธีการที่จะใช้มันในโปรแกรมของฉัน ฉันค่อนข้างชอบ C ++ lower_boundและupper_bound(ดูที่นี่ ) และฉันค่อนข้างคาดหวังที่จะเห็นบางสิ่งบางอย่างสำหรับการค้นหาช่วง อย่างไรก็ตามวิธีการที่คล้ายกันดูเหมือนจะแปลกขาดจากเอกสาร ฉันพลาดอะไรไปรึเปล่า? หรือว่า MS จัดเตรียมพจนานุกรมเรียงอย่างแท้จริงโดยไม่ต้องเข้าถึงช่วงเรียงอย่างมีประสิทธิภาพ? ดูเหมือนจะไม่เหมือนสิ่งที่คน ๆ หนึ่งทำได้บนIEnumerableปุ่มเหมือนกับวิธีการขยายดังนั้นฉันค่อนข้างงุนงงฉันไม่เห็นบางสิ่งที่ได้รับจากคอลเลกชันโดยตรง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.