การมีเพศสัมพันธ์กับการทำงานร่วมกัน
Coupling และ cohesion เป็นแนวคิดสองประการที่พบใน Java (และภาษาเชิงวัตถุอื่นๆ ทั้งหมด) Coupling วัดจำนวนโมดูลโปรแกรมแต่ละโมดูลที่ขึ้นอยู่กับโมดูลโปรแกรมอื่นๆ การทำงานร่วมกันจะวัดว่าแต่ละฟังก์ชันมีความเกี่ยวข้องกันมากเพียงใดภายในโมดูล ที่จริงแล้ว ภาษาเชิงวัตถุใดๆ (รวมถึง Java) มีวัตถุประสงค์หลักสองประการในการเพิ่มความเหนียวแน่นและลดการเชื่อมต่อพร้อมกัน เพื่อที่จะพัฒนาโปรแกรมที่มีประสิทธิภาพสูงสุด เมตริกทางวิศวกรรมซอฟต์แวร์ทั้งสองนี้ได้รับการพัฒนาโดย Larry Constantine เพื่อลดต้นทุนในการแก้ไขและบำรุงรักษาซอฟต์แวร์
ความสามัคคีคืออะไร
Cohesion วัดว่าแต่ละฟังก์ชันมีความเกี่ยวข้องกันมากเพียงใดภายในโมดูลโปรแกรม ชั้นเรียนที่มีโครงสร้างที่ดีจะนำไปสู่โปรแกรมที่มีความเหนียวแน่นสูง หากคลาสใดดำเนินการชุดของฟังก์ชันที่เกี่ยวข้องสูง คลาสนั้นจะถูกกล่าวถึงเป็นอันหนึ่งอันเดียวกัน ในทางกลับกัน หากชั้นเรียนมีฟังก์ชันการทำงานที่ไม่เกี่ยวข้องกันจำนวนมาก แสดงว่าชั้นเรียนนั้นไม่เหนียวแน่นเลย สิ่งสำคัญคือต้องเข้าใจว่าการไม่มีความเหนียวแน่นไม่ได้หมายความว่าแอปพลิเคชันโดยรวมไม่มีฟังก์ชันที่จำเป็น หากไม่มีการทำงานร่วมกัน จะเป็นการยากมากที่จะจัดการฟังก์ชันการทำงาน เนื่องจากจะกระจัดกระจายอยู่ในที่ที่ไม่ถูกต้อง เนื่องจากความซับซ้อนของแอปพลิเคชันเพิ่มขึ้นเมื่อเวลาผ่านไป การดูแลรักษา แก้ไข และขยายพฤติกรรมที่กระจัดกระจายไปทั่วโค้ดนั้นเป็นเรื่องที่น่าเบื่อมาก แม้แต่โปรแกรมเมอร์ที่มีประสบการณ์ส่วนใหญ่
คลัปคืออะไร
Coupling วัดจำนวนโมดูลโปรแกรมแต่ละโมดูลที่ขึ้นอยู่กับโมดูลโปรแกรมอื่นๆปฏิสัมพันธ์ระหว่างสองวัตถุเกิดขึ้นเนื่องจากมีการมีเพศสัมพันธ์ โปรแกรมที่เชื่อมต่อกันแบบหลวมๆ นั้นมีความยืดหยุ่นและขยายได้สูง การมีเพศสัมพันธ์อย่างแน่นหนานั้นไม่ดีเพราะวัตถุหนึ่งสามารถพึ่งพาวัตถุอื่นได้อย่างมาก นี่เป็นฝันร้ายเมื่อโค้ดถูกแก้ไข เนื่องจากการ coupling สูงหมายความว่าโปรแกรมเมอร์จำเป็นต้องทำงานกับโค้ดหลายๆ ตำแหน่งเพื่อปรับเปลี่ยนพฤติกรรมเพียงครั้งเดียว การมีเพศสัมพันธ์ที่แข็งแกร่งจะนำไปสู่โปรแกรมที่มีความยืดหยุ่นต่ำและความสามารถในการปรับขยาย/ขยายได้น้อยลง อย่างไรก็ตาม ในภาษาโปรแกรมอย่าง Java การหลีกเลี่ยง coupling อย่างสมบูรณ์นั้นเป็นไปไม่ได้ แต่ขอแนะนำว่าโปรแกรมเมอร์พยายามอย่างเต็มที่เพื่อลดการมีเพศสัมพันธ์ให้มากที่สุด นอกจากนี้ยังสามารถใช้ coupling เพื่อช่วยให้วัตถุมีปฏิสัมพันธ์ซึ่งกันและกันโดยไม่กระทบต่อความสามารถในการปรับขนาดและความยืดหยุ่น
Coupling กับ Cohesion ต่างกันอย่างไร
แม้ว่า coupling และ cohesion จะจัดการกับคุณภาพของโมดูลในด้านวิศวกรรมซอฟต์แวร์ แต่ก็เป็นแนวคิดที่แตกต่างไปจากเดิมอย่างสิ้นเชิงCohesion พูดถึงความสามารถในการทำงานที่เกี่ยวข้องกันภายในโมดูล ในขณะที่การมีเพศสัมพันธ์เกี่ยวข้องกับจำนวนโมดูลที่ขึ้นอยู่กับโมดูลโปรแกรมอื่นภายในแอปพลิเคชันทั้งหมด เพื่อให้ได้ซอฟต์แวร์ที่มีคุณภาพดีที่สุด การทำงานร่วมกันและการมีเพศสัมพันธ์ควรไปถึงปลายทั้งสองฝั่งตรงข้ามของสเปกตรัม กล่าวอีกนัยหนึ่ง คัปปลิ้งหลวมและการทำงานร่วมกันอย่างแน่นหนาเป็นซอฟต์แวร์ที่ดีที่สุด การมีฟิลด์ส่วนตัว คลาสที่ไม่ใช่แบบสาธารณะและเมธอดส่วนตัวทำให้เกิดการมีเพศสัมพันธ์แบบหลวม ในขณะที่ทำให้สมาชิกทุกคนมองเห็นได้ภายในคลาสและมีแพ็คเกจเนื่องจากการมองเห็นเริ่มต้นให้การทำงานร่วมกันสูง