ความแตกต่างระหว่าง Shallow copy กับ Deep copy

วันนี้ผมขออธิบายคำศัพท์ 2 คำที่เกี่ยวกับการ Copy Object ครับ

  • Shallow copy คือ การ Copy Object โดยที่ข้อมูลยังมี Reference เชื่อมโยงกันในหน่วยความจำครับ ดังรูป
    • จุดเด่น: ทำงานเร็วครับ เพราะไม่ต้องมาเสียเวลาสร้าง Object ใหม่
    • จุดด้อย: เวลาเขียน Code จัดการ เราต้องควบคุมดีๆ เพื่อป้องกัน Side Effect จากการแก้ไข Object ที่ผิดพลาดครับ เพราะแก้ Value ที่เดียว ทำให้ Object ที่ใช้ Reference เดียวกัน เปลี่ยนค่าไปด้วย
    2015-07-01_150236

  • Deep copy การ Copy Object โดยสร้างอีก Object หนึ่งเลย โดยไม่มี Reference เชื่อมโยงกันในหน่วยความจำครับ ดังรูป
    • จุดเด่น: Object แต่ละตัวแยกกันเป็นอิสระ จึงไม่มี Side Effect จากการแก้ไขค่า Object ที่เชื่อมโยงกัน
    • จุดด้อย: การทำงานช้ากว่าแบบ Shallow copy เพราะ ต้องเสียเวลามาสร้าง Object ใหม่
    2015-07-01_150432

สำหรับ Blog ในตอนต่อไปเป็นการแสดงตัวอย่างการ Copy Object ในภาษา Java และ C# ครับ สุดท้ายนี้ครับ เวลาเขียนโปรแกรม สิ่งที่เราต้องรู้ คือ Concept แนวคิดของแต่ละภาษาครับ เพราะเราจะเขียนได้ แต่ไม่สามารถพูดได้เต็มๆปากนะครับ ว่าเราสามารถเขียนเป็น เข้าใจ และมี Performance ดีครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.