ฉันคิดว่าคุณอาจสับสนกับคำที่เลือกโดย Robert Martin นี่คือสิ่งที่ฉันคิดว่าความสับสนเริ่มขึ้น:
นี่ก็หมายความว่าหากแพ็คเกจมีความเสถียรน้อยกว่า(มีแนวโน้มที่จะเปลี่ยนแปลงได้) ก็ควรมีรูปธรรมมากขึ้น
หากคุณอ่านบทความต้นฉบับคุณจะเห็น (เน้นที่เหมือง):
นิยามคลาสสิกของความเสถียรของคำคือ: "ไม่ขยับง่าย"
นี่คือคำจำกัดความที่เราจะใช้ในบทความนี้ นั่นคือความมั่นคงไม่ได้วัดความน่าจะเป็นที่โมดูลจะเปลี่ยน ค่อนข้างมันเป็นตัวชี้วัดของความยากลำบากในการเปลี่ยนแปลงโมดูล
เห็นได้ชัดว่าโมดูลที่เปลี่ยนแปลงได้ยากขึ้นจะมีความผันผวนน้อยลง ยิ่งโมดูลเปลี่ยนยากเช่นยิ่งมีเสถียรภาพมากก็จะยิ่งมีความผันผวนน้อยลง
ฉันได้พยายามเสมอกับทางเลือกของผู้เขียนของคำที่มีความเสถียรที่ผม (เช่นคุณ) มีแนวโน้มที่จะคิดของ "โอกาส" ด้านของความมั่นคงคือไม่น่าจะเปลี่ยนแปลง ความยากหมายความว่าการเปลี่ยนโมดูลนั้นจะทำลายโมดูลอื่น ๆ จำนวนมากและมันจะเป็นงานที่ต้องแก้ไขรหัส
มาร์ตินยังใช้คำที่เป็นอิสระและมีความรับผิดชอบซึ่งสำหรับฉันสื่อความหมายได้มากกว่า ในการสัมมนาฝึกอบรมของเขาเขาใช้คำอุปมาเกี่ยวกับผู้ปกครองของเด็กที่โตขึ้นและวิธีที่พวกเขาควรจะ "รับผิดชอบ" เพราะลูกของพวกเขาขึ้นอยู่กับพวกเขา การหย่าร้างการว่างงานการถูกกักขัง ฯลฯ เป็นตัวอย่างที่ดีในโลกแห่งความจริงที่มีผลกระทบด้านลบที่การเปลี่ยนแปลงของผู้ปกครองจะมีต่อเด็ก ดังนั้นผู้ปกครองควร "มั่นคง" เพื่อประโยชน์ของลูก ๆ โดยวิธีการอุปมาอุปมัยของเด็ก / ผู้ปกครองนี้ไม่จำเป็นต้องเกี่ยวข้องกับการสืบทอดใน OOP!
ดังนั้นต่อไปนี้วิญญาณของ "รับผิดชอบ" ฉันมาพร้อมกับความหมายทางเลือกสำหรับการเปลี่ยนแปลงยาก (หรือไม่ควรเปลี่ยน ):
- Obligated - หมายถึงคลาสอื่น ๆ ขึ้นอยู่กับคลาสนี้ดังนั้นจึงไม่ควรเปลี่ยนแปลง
- Beholden - อ้างแล้ว
- ข้อ จำกัด - ภาระผูกพันของชั้นนี้ จำกัด สิ่งอำนวยความสะดวกในการเปลี่ยนแปลง
ดังนั้นการเสียบคำจำกัดความเหล่านี้ลงในคำสั่ง
ยิ่งมีเสถียรภาพแพคเกจนามธรรมมากขึ้นมันควรจะเป็น
- มากขึ้นภาระผูกพันในแพคเกจนามธรรมมากขึ้นมันควรจะเป็น
- ยิ่งเห็นคุณค่าของแพ็คเกจมากเท่าไรก็ยิ่งเป็นนามธรรมมากขึ้นเท่านั้น
- ยิ่งจำกัดแพคเกจนามธรรมมากขึ้นมันควรจะเป็น
ลองอ้างอิงหลักการนามธรรมที่มีเสถียรภาพ (SAP) โดยเน้นคำที่สับสนว่าเสถียร / ไม่เสถียร:
แพ็คเกจที่มีความเสถียรสูงสุดควรเป็นนามธรรมที่สุด แพ็คเกจที่ไม่เสถียรควรเป็นรูปธรรม นามธรรมของแพคเกจที่ควรจะอยู่ในสัดส่วนที่ของความมั่นคง
ให้ความกระจ่างโดยไม่มีคำที่สับสนเหล่านี้:
แพคเกจที่ได้รับการเห็นคุณค่าสูงสุดในส่วนอื่น ๆ ของระบบควรเป็นนามธรรมที่สุด แพ็คเกจที่สามารถเปลี่ยนแปลงได้โดยไม่มีปัญหาควรเป็นรูปธรรม นามธรรมของแพคเกจที่ควรจะอยู่ในสัดส่วนที่ว่ามันยากที่จะได้รับการแก้ไข
TL; DR
ชื่อคำถามของคุณถาม:
มีข้อเสียอย่างมีนัยสำคัญหรือไม่ขึ้นอยู่กับ abstractions?
ฉันคิดว่าถ้าคุณสร้าง abstractions อย่างถูกต้อง (เช่นพวกมันมีอยู่เพราะโค้ดจำนวนมากขึ้นอยู่กับพวกเขา) แล้วก็ไม่มีข้อเสียที่สำคัญ