Cohesion (ความเชื่อมั่น/ความเป็นหนึ่งเดียว) ใน C# วัดระดับความสัมพันธ์ระหว่างสมาชิกภายในโมดูลหรือคลาสเดียวกัน Cohesion สูงหมายถึงสมาชิกทุกตัวทำงานร่วมกันเพื่อวัตถุประสงค์เดียว ทำให้โค้ดเข้าใจง่าย บำรุงรักษาง่าย และนำกลับมาใช้ใหม่ได้
ระดับ Cohesion
- High Cohesion (ดี): คลาสทำหน้าที่เดียวเฉพาะเจาะจง สมาชิกทุกตัวเกี่ยวข้องกันโดยตรง
- Low Cohesion (ไม่ดี): คลาสทำหลายหน้าที่ไม่เกี่ยวข้อง ยากต่อการเข้าใจและบำรุงรักษา
ตัวอย่าง High Cohesion: System.Math
Math.Abs // ค่าสัมบูรณ์ Math.PI // ค่าคงที่ π Math.Pow // ยกกำลัง Math.Sqrt // รากที่สอง Math.Max // ค่าสูงสุด
ทุกเมธอดและค่าคงที่เกี่ยวข้องกับคณิตศาสตร์อย่างเดียว
ตัวอย่าง Low Cohesion (ควรหลีกเลี่ยง)
คลาสที่ทำ: ส่งอีเมล, พิมพ์เอกสาร, คัดลอกไฟล์, คำนวณภาษี - ทั้งหมดในคลาสเดียว
ประโยชน์ของ High Cohesion
- เข้าใจง่าย - อ่านชื่อคลาสรู้ทันทีว่าทำอะไร
- ทดสอบง่าย - ทดสอบแต่ละหน้าที่แยกกันได้
- นำกลับมาใช้ใหม่ได้ - ดึงคลาสไปใช้ในโปรเจกต์อื่นง่าย
- บำรุงรักษาง่าย - แก้ไขหน้าที่ใดหน้าที่หนึ่งไม่กระทบหน้าที่อื่น
หลักการ: พยายามให้ Cohesion สูงสุด (Single Responsibility Principle - SRP) คลาสแต่ละตัวควรมีเหตุผลในการเปลี่ยนแปลงเพียงเหตุผลเดียว