S = หลักการความรับผิดชอบเดี่ยว
ดังนั้นฉันจึงคาดว่าจะเห็นโครงสร้างโฟลเดอร์ / ไฟล์และลำดับชั้นวัตถุที่จัดระเบียบอย่างดี แต่ละคลาส / ชิ้นส่วนของการทำงานควรตั้งชื่อว่าการทำงานนั้นชัดเจนมากและควรมีเหตุผลในการทำงาน
หากคุณเห็นคลาสผู้จัดการขนาดใหญ่ที่มีโค้ดหลายพันบรรทัดนั่นอาจเป็นสัญญาณว่าคุณไม่ได้ติดตามความรับผิดชอบเพียงอย่างเดียว
O = หลักการเปิด / ปิด
นี่คือแนวคิดที่ว่าควรมีการเพิ่มฟังก์ชันการทำงานใหม่ผ่านคลาสใหม่ที่มีผลกระทบน้อยที่สุดใน / จำเป็นต้องปรับเปลี่ยนฟังก์ชันการทำงานที่มีอยู่
ฉันคาดหวังว่าจะเห็นการใช้งานของการสืบทอดวัตถุการพิมพ์ย่อยอินเทอร์เฟซและคลาสนามธรรมมากมายเพื่อแยกการออกแบบชิ้นส่วนของการทำงานจากการใช้งานจริงทำให้ผู้อื่นเข้ามาและใช้เวอร์ชันอื่น ๆ เป็นต้นฉบับ
L = หลักการทดแทน Liskov
สิ่งนี้เกี่ยวข้องกับความสามารถในการจัดการกับชนิดย่อยเป็นชนิดพาเรนต์ สิ่งนี้ออกมาจากกล่องใน C # หากคุณใช้ลำดับชั้นวัตถุที่สืบทอดมาอย่างเหมาะสม
ฉันคาดหวังว่าจะเห็นรหัสปฏิบัติกับวัตถุทั่วไปเป็นประเภทพื้นฐานและวิธีการโทรในคลาสฐาน / นามธรรมมากกว่าการสร้างอินสแตนซ์และทำงานกับประเภทย่อยเอง
I = หลักการแยกส่วนต่อประสาน
คล้ายกับ SRP โดยทั่วไปคุณกำหนดย่อยขนาดเล็กของการทำงานเป็นอินเตอร์เฟซและการทำงานร่วมกับผู้ให้ระบบของคุณหลุดพ้น (เช่นFileManager
อาจมีความรับผิดชอบเดียวในการจัดการกับไฟล์ I / O แต่ที่สามารถดำเนินการIFileReader
และIFileWriter
ที่มีความหมายวิธีการเฉพาะสำหรับการอ่าน และการเขียนไฟล์)
D = หลักการผกผันของการพึ่งพา
อีกครั้งนี้เกี่ยวข้องกับการรักษาระบบแยกชิ้นส่วน บางทีคุณอาจจะต้องระวังสำหรับการใช้ห้องสมุดฉีด .NET อ้างอิงที่ถูกนำมาใช้ในการแก้ปัญหาเช่นUnity
หรือNinject
หรือระบบ ServiceLocator AutoFacServiceLocator
เช่น