คำตอบคือประเภทที่ไม่เปลี่ยนรูปนั้นปลอดภัยจากบั๊ก เข้าใจได้ง่ายขึ้น และพร้อมสำหรับการเปลี่ยนแปลงมากขึ้น การเปลี่ยนแปลง ทำให้เข้าใจสิ่งที่โปรแกรมของคุณทำได้ยากขึ้น และการบังคับใช้สัญญายากขึ้นมาก
วัตถุกลายพันธุ์ไม่ดีหรือไม่
สุดท้าย วัตถุที่เปลี่ยนแปลงได้คือ นักฆ่าในสถานการณ์ที่เกิดขึ้นพร้อมกัน เมื่อใดก็ตามที่คุณเข้าถึงวัตถุที่เปลี่ยนแปลงได้จากเธรดที่แยกจากกัน คุณต้องจัดการกับการล็อก ซึ่งจะช่วยลดปริมาณงานและทำให้โค้ดของคุณดูแลรักษายากขึ้นอย่างมาก
ทำไมแชร์สถานะไม่ดี
แชร์สถานะไม่แน่นอนดังนี้: หากฝ่ายสองฝ่ายขึ้นไปสามารถเปลี่ยนข้อมูลเดียวกันได้ (ตัวแปร วัตถุ ฯลฯ) และหากอายุขัยของพวกเขาทับซ้อนกัน ดังนั้นจึงมีความเสี่ยงที่ฝ่ายหนึ่งจะแก้ไขเพื่อป้องกันไม่ให้อีกฝ่ายทำงานอย่างถูกต้อง
ทำไมการไม่เปลี่ยนรูปจึงเป็นสิ่งที่ดี
นอกจากลดการใช้หน่วยความจำแล้ว ความไม่เปลี่ยนรูป ยังช่วยให้คุณเพิ่มประสิทธิภาพแอปพลิเคชันของคุณโดยใช้ความเท่าเทียมกันของค่าอ้างอิงและค่า ทำให้ง่ายต่อการดูว่ามีอะไรเปลี่ยนแปลงหรือไม่ ตัวอย่างเช่น การเปลี่ยนแปลงสถานะในองค์ประกอบปฏิกิริยา
อะไรคือข้อเสียของการไม่เปลี่ยนรูป
ข้อเสียเพียงอย่างเดียวของคลาสที่ไม่เปลี่ยนรูปคือ ที่พวกเขาต้องการวัตถุแยกต่างหากสำหรับแต่ละค่าที่แตกต่างกัน การสร้างวัตถุเหล่านี้อาจมีค่าใช้จ่ายสูง โดยเฉพาะอย่างยิ่งหากมีขนาดใหญ่ ตัวอย่างเช่น สมมติว่าคุณมี BigInteger ล้านบิต และคุณต้องการเปลี่ยนบิตที่มีลำดับต่ำ:BigInteger moby=…; moby=moby