Cohesion&Coupling
Cohesion หมายถึง class หรือ module สามารถทำอะไรได้
Low Cohesion คือการที่ Class สามารถทำได้หลายอย่าง ไม่ได้สนใจที่จะทำแค่อย่างเดียว
High Cohesion คือการที่ class ทำงานไปในทางเดียวกัน
Coupling หมายถึงความเกี่ยวข้องกันระหว่าง 2 Class
Low Coupling หมายถึงการเปลี่ยนอะไรบางอย่างใน Class จะไม่ส่งผลถึงอีก Class
High Coupling จะทำให้ยากต่อการแก้ไขโค้ด เพราะการปรับเปลี่ยนอะไรบางอย่างอาจส่งผลถึงทั้งระบบ
เพราะฉะนั้นการออกแบบซอฟต์แวร์ที่ดีควรเป็น high cohesion and low coupling