ผมขอแนะนำว่าลักษณะที่สำคัญที่สุดของการเขียนโปรแกรมเชิงวัตถุเป็นที่ของการจัดการความซับซ้อน
สมองของมนุษย์สามารถมีแนวความคิดได้จำนวนมากในคราวเดียว - ขีด จำกัด ที่ยกมาของการจดจำรายการอิสระ 7 +/- 2 มาถึงใจ
เมื่อฉันทำงานกับระบบ 600kloc ในที่ทำงานฉันไม่สามารถถือสิ่งทั้งหมดไว้ในหัวของฉันได้ในครั้งเดียว ถ้าผมจะทำอย่างนั้นฉันจะ จำกัด อยู่ที่การทำงานในมากระบบที่มีขนาดเล็ก
โชคดีที่ฉันไม่จำเป็นต้อง รูปแบบการออกแบบที่หลากหลายและโครงสร้างอื่น ๆ ที่เราเคยใช้ในโครงการนั้นหมายความว่าฉันไม่ต้องจัดการกับระบบทั้งหมดในครั้งเดียว - ฉันสามารถหยิบชิ้นส่วนแต่ละชิ้นและทำงานกับพวกมันได้ ในรูปแบบที่กำหนดไว้อย่างดี
แนวคิด OO ที่สำคัญทั้งหมดให้วิธีการจัดการความซับซ้อน
Encapsulation - ให้ฉันจัดการกับ API ภายนอกที่ให้บริการที่หลากหลายแก่ฉันโดยไม่ต้องกังวลว่าจะใช้บริการเหล่านั้นอย่างไร
สิ่งที่เป็นนามธรรม - ขอให้ฉันมุ่งเน้นไปที่ลักษณะสำคัญและไม่สนใจสิ่งที่ไม่เกี่ยวข้อง
องค์ประกอบ - ขอผมใช้ส่วนประกอบที่สร้างขึ้นใหม่ด้วยชุดค่าผสมใหม่
ความแตกต่าง - ให้ฉันถามบริการโดยไม่ต้องกังวลว่าวัตถุต่าง ๆ อาจให้บริการในวิธีที่แตกต่างกัน
การสืบทอด - ให้ฉันใช้อินเทอร์เฟซหรือการนำไปใช้ใหม่โดยให้เฉพาะส่วนที่แตกต่างจากสิ่งที่เคยทำมาก่อน
หลักการความรับผิดชอบเดี่ยว - ช่วยให้วัตถุประสงค์สำหรับแต่ละวัตถุชัดเจนและรัดกุมดังนั้นจึงเป็นเรื่องง่ายที่จะให้เหตุผล
Liskov Substit Prinicple - อย่าวางกับดักให้กันและกันโดยแนะนำการพึ่งพาแปลก ๆ
หลักการเปิด / ปิด - อนุญาตการขยายและการดัดแปลงในแบบที่ไม่ต้องการให้เราเสี่ยงต่อการทำลายโค้ดที่มีอยู่
Dependency Injection - เราจะทำการจัดองค์ประกอบไปอีกระดับแล้วประกอบเข้าด้วยกันในภายหลัง
การพัฒนาอินเตอร์เฟสที่มุ่งเน้น - เราจะนำเอานามธรรมไปสู่ระดับต่อไปและขึ้นอยู่กับสิ่งที่เป็นนามธรรมเท่านั้น