ผู้เขียน Code Complete หมายถึงอะไรเมื่อพูดถึงการซ่อนข้อมูลทั่วโลก


25

ในส่วนที่ 6.4 ของ Code Complete 2nd Edition มีย่อหน้าเกี่ยวกับการซ่อนข้อมูลทั่วโลก สิ่งที่ฉันสนใจเป็นพิเศษคือ McConnell (ผู้แต่งหนังสือ) ให้ตัวอย่างของประโยชน์จากการซ่อนข้อมูลทั่วโลก มีตัวอย่างหนึ่งที่ฉันไม่เข้าใจ ฉันไม่มีหนังสือฉบับภาษาอังกฤษดังนั้นฉันจะพยายามแปลข้อความ

การซ่อนข้อมูลทั่วโลก (... ) คุณสามารถเปลี่ยนโครงสร้างของข้อมูลโดยไม่ต้องแก้ไขโปรแกรม

McConnell แปลว่าอะไร? เขากำลังพูดถึงการเปลี่ยนแปลงข้อมูลทั่วโลกหรือไม่ ถ้าเป็นเช่นนั้นทำไมคุณไม่ต้องแก้ไขโปรแกรมของคุณเมื่อคุณใช้วิธีการในการเรียกข้อมูลกลับคืน? หรือบางทีเขากำลังพูดถึงสิ่งอื่นที่นี่?

ฉันจะซาบซึ้งอย่างมากถ้ามีคนล้างความสับสนของฉัน หากคุณสามารถให้ตัวอย่างมันจะดีมาก (ตัวอย่างนั้นยอดเยี่ยมคุณก็รู้)

คำตอบ:


44

ผู้เขียนกำลังพูดถึงโครงสร้างของข้อมูลทั่วโลกและการเปลี่ยนแปลงโครงสร้างนั้นจะส่งผลกระทบต่อรหัสที่ใช้งานอย่างไร

หากข้อมูลส่วนกลางสามารถเข้าถึงได้โดยตรงการเปลี่ยนแปลงโครงสร้างข้อมูลหมายความว่าอาจต้องเปลี่ยนรหัสทั้งหมดที่ใช้งาน

หากข้อมูลส่วนกลางสามารถเข้าถึงได้ผ่านอินเทอร์เฟซ (เช่นชุดฟังก์ชั่น) การเปลี่ยนโครงสร้างจะหมายถึงการเปลี่ยนอุปกรณ์เสริมเหล่านี้เท่านั้น ส่วนที่เหลือของรหัสไม่จำเป็นต้องเปลี่ยน

ตัวอย่างง่ายๆจะเป็นรหัสที่เริ่มต้นด้วยอาร์เรย์ของจำนวนเต็ม (เช่นstatic int[]ในคลาส Java เป็นต้น) ถ้าอาเรย์นั้นสามารถเข้าถึงได้ทั่วโลกผู้คนจะเริ่มใช้มันด้วยไวยากรณ์อาเรย์ (เช่นGlobal.cool_stuff[x] = 1;) หากด้วยเหตุผลบางอย่างที่คุณต้องการเปลี่ยนอาเรย์นั้นเป็นประเภทคอลเลกชัน (เวกเตอร์, รายการ, อะไรก็ตาม) คุณต้องเปลี่ยนรหัสทั้งหมดที่ใช้ข้อมูลส่วนนี้ทั่วโลกตั้งแต่กลายเป็นอย่างน้อย syntactically ไม่ถูกต้อง

หากข้อมูลนั้นเข้าถึงได้ผ่านชุดฟังก์ชั่น accessor / mutator ("ซ่อนอยู่หลัง" ส่วนต่อประสาน) คุณจะต้องเปลี่ยนฟังก์ชั่นชุดเล็ก ๆ นั้นเท่านั้น รหัสที่ใช้ข้อมูลจริงอาจยังคงไม่เปลี่ยนแปลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.