เมื่อมีการสร้างห้องสมุดที่ผมต้องให้แน่ใจว่าวิธีการที่ภาคเอกชนจะต้องทำงานตามที่คาดไว้เมื่อเรียกไม่ได้โดยวิธีการอื่น ๆ ของชั้นเดียวกัน แต่โดยห้องสมุดอื่นผ่านการสะท้อน ?
ตัวอย่างเช่นหากวิธีส่วนตัวprivate DoSomething(int number)
คาดว่า:
number
เป็นจำนวนเต็มบวกที่ไม่เป็นศูนย์และ:- ตัวแปรส่วนตัว
string abc
ไม่ใช่โมฆะและไม่ใช่สตริงว่าง
และสมบูรณ์ล้มเหลวอย่างน่าเกลียดหากทั้งสองเงื่อนไขไม่ตรงกันฉันต้องจัดการกับความล้มเหลวเหล่านั้นแม้ว่าฉันจะรู้ว่าวิธีการทั้งหมดในชั้นเรียนจะกำหนดค่าที่ไม่ว่างเปล่าให้กับการabc
โทรก่อนDoSomething
และส่งจำนวนเต็มบวกที่ไม่เป็นศูนย์ให้ วิธี?
กล่าวอีกนัยหนึ่งคือรหัสที่ไม่ได้ป้องกันการโทรที่ไม่ปลอดภัยผ่านการสะท้อนอาจถือได้ว่าเป็นรหัสที่มีคุณภาพต่ำหรือเป็นของผู้โทรที่ใช้การสะท้อนเพื่อให้แน่ใจว่าการโทรจะไม่ทำลายอะไรเลย
หมายเหตุ: คำถามของฉันครอบคลุมเฉพาะชุดไลบรารีมาตรฐาน นี่ไม่ครอบคลุมรหัสที่จะต้องมีความปลอดภัยสูง (เช่นเมื่อใครบางคนอาจสนใจโดยใช้การสะท้อนเพื่อให้มันทำงานโดยไม่คาดคิดหรือผิดพลาด)
¹เนื่องจากชั้นเรียนได้รับการบันทึกอย่างถูกต้องเนื่องจากมีการทดสอบหน่วยมากพอที่จะตรวจสอบให้แน่ใจว่าผู้พัฒนารายอื่นจะไม่ทำลายวิธีนี้เป็นต้น