นี่คือหลักการออกแบบซอฟต์แวร์ที่สำคัญที่สุดที่กล่าวถึงในหนังสือเล่มนี้:

  1. ความซับซ้อนเพิ่มขึ้นแบบค่อยเป็นค่อยไป: คุณต้องให้ความสนใจกับรายละเอียดเล็ก ๆ (ดู p. 11).
  2. โค้ดที่ใช้ได้นั้นไม่เพียงพอ (ดู p. 14).
  3. ลงทุนในการปรับปรุงการออกแบบระบบอย่างต่อเนื่องในส่วนเล็ก ๆ (ดู p. 15).
  4. Modules ควรมีความลึก (ดู p. 22)
  5. Interface ควรออกแบบให้การใช้งานที่พบได้บ่อยที่สุดง่ายที่สุด (ดู p. 27).
  6. สำคัญมากกว่าที่ Module มี Interface ที่เรียบง่ายมากกว่า implementation ที่เรียบง่าย (ดู pp. 55, 71).
  7. Module ที่มีวัตถุประสงค์ทั่วไปจะลึกกว่า (ดู p. 39).
  8. แยก general-purpose code กับ special-purpose code ออกจากกัน (ดู p. 62).
  9. Layer ที่แตกต่างกันควรมี abstraction ที่แตกต่างกัน (ดู p. 45).
  10. ดึง complexity ลงสู่ชั้นล่าง (ดู p. 55).
  11. กำหนด errors (และ special cases) ให้หายไป (ดู p. 79).
  12. Design it twice (ดู p. 91).
  13. Comment ควรอธิบายสิ่งที่ไม่ชัดเจนจากโค้ด (ดู p. 101).
  14. ซอฟต์แวร์ควรออกแบบเพื่อความง่ายในการอ่าน ไม่ใช่ความง่ายในการเขียน (ดู p. 149).
  15. การพัฒนาซอฟต์แวร์ในแต่ละขั้นตอนควรเป็น abstraction ไม่ใช่ feature (ดู p. 154).