มีตัวชี้วัดสำหรับการทำงานร่วมกันและการมีเพศสัมพันธ์?


34

มีเมตริกที่คล้ายคลึงกับการวัดความซับซ้อนของ McCabeในการวัดว่าการทำกิจวัตรประจำวันมีความเหนียวหรือไม่และวิธีการที่คู่กันอย่างหลวม ๆ (หรือแน่นหนา) คือรหัสอื่นในฐานรหัสเดียวกันหรือไม่?


คำตอบ:


29

ฉันคิดว่าตัวชี้วัดที่คุณกำลังมองหาคือ LCOM4 แม้ว่ามันจะใช้กับคลาสได้มากขึ้น

โซนาร์อธิบายได้ดีที่นี่ :

... ตัวชี้วัด: LCOM4 (วิธีการขาดการเชื่อมโยงกัน) เพื่อวัดระดับชั้นเหนียว การตีความตัวชี้วัดนี้ค่อนข้างง่ายเนื่องจากค่า 1 หมายถึงคลาสมีความรับผิดชอบเพียงหนึ่งเดียว (ดี) และค่า X หมายถึงคลาสนั้นอาจมีความรับผิดชอบ X (ไม่ดี) และควรได้รับการแบ่ง / แยกใหม่

ไม่มีเวทมนตร์ใด ๆ ที่นี่มีเพียงสามัญสำนึก ลองมาดูตัวอย่างง่ายๆกับ Class Driver คลาสนี้มีสองฟิลด์: รถยนต์และสมองและห้าวิธี: drive (), goTo (), stop (), getAngry () และ drinkCoffee () นี่คือกราฟการพึ่งพาระหว่างส่วนประกอบเหล่านั้น มีองค์ประกอบที่เกี่ยวข้องสามบล็อกดังนั้น LCOM4 = 3 ดังนั้นชั้นดูเหมือนจะมีความรับผิดชอบที่แตกต่างกันสามและแบ่งหลักการความรับผิดชอบเดียว http://i.stack.imgur.com/2527G.png

...

มันเป็นเครื่องมือที่ยอดเยี่ยมถ้าคุณสามารถใช้มันได้ :)


@OnorioCatenacci ไม่มีปัญหา :)
Oleksi

น่าเสียดายที่พวกเขาไม่ได้คำนวณวิธีการวัด
Onorio Catenacci

3
สิ่งนี้อาจช่วยได้: aivosto.com/project/help/pm-oo-cohesion.html
Oleksi

จากความอยากรู้คุณจะสร้างแผนภาพนั้นให้ปฏิบัติตามหลักการความรับผิดชอบเดี่ยวได้อย่างไร brain.setAngry(driver)? car.applyBreaks(driver)?
Phil

ฉันสงสัยว่าตัวชี้วัดการทำงานร่วมกันที่ใช้รหัสเป็นตัวบ่งชี้ถึงการทำงานร่วมกันของระดับอินเตอร์เฟสอย่างแท้จริงและอาจส่งเสริมการเขียนโปรแกรมที่ไม่ดี: mortoray.com/2015/04/29/ …
edA-qa mort-ora-y

16
  • Afferent coupling: จำนวนหน้าที่
  • Efferent coupling: จำนวนการอ้างอิง
  • ความไม่แน่นอน: อัตราส่วนของการมีเพศสัมพันธ์ต่อการมีเพศสัมพันธ์ทั้งหมด (Afferent + Efferent)

ความไม่เสถียรได้รับการสนับสนุนในเครื่องมือการวัดรหัสต่างๆ


ขอบคุณ @ Brian - สิ่งที่ฉันหวังว่าจะเจอ
Onorio Catenacci
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.