วันนี้ไปเจอมา สะดุดก็ตรงชื่อมันนี่แหละ คอนเซปต์อ้างว่าโค้ดห่วยดูแลยากมักสอดคล้องกับโค้ดที่ผ่านการทดสอบมาไม่เพียงพอ crap4j (Change Risk Analysis and Prediction for Java) [ยังอุตสาห์หาชื่อมาจับได้] เป็นเครื่องมือวัดความห่วยของโค้ดโดยพิจารณาจากความซับซ้อนของเมธอดและค่าการครอบคลุมของบททดสอบ (test coverage) ในเมธอด โดยมีสูตร v.0.1 ว่า
CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
comp(m) เป็นผลการวัดความซับซ้อนของเมธอด m ส่วน cov(m) เป็นการวัดการทำ test coverage เมธอด ผลลัพธ์ที่ได้คือคะแนนความห่วยของเมธอดนั้น จากสูตรเพราะฉะนั้นถ้าเมธอดยิ่งซับซ้อนเท่าไหร่ การทำ test coverage ก็ต้องทำอย่างจริงใจมากขึ้นเท่านั้น ตารางข้างล่างบ่งบอกความสัมพันธ์วิกฤตก่อนจะพิจารณาว่าเมธอดนั้นห่วยหรือไม่
คะแนนความซับซ้อนของเมธอด % test coverage วิกฤตเมธอดห่วย
------------------------------ -------------------------------- 0 – 5 0% 10 42% 15 57% 20 71% 25 80% 30 100% 31+ ไม่มีทางที่ test coverage ใดๆ จะทำให้เมธอดที่ซับซ้อนขนาดนี้หลุดพ้นจากคำว่า ห่วย ไปได้
ผู้ประพันธ์ให้ความเห็นว่าที่ระดับโปรเจกต์หากมี crap เมธอดเกิน 5% ให้พิจารณาได้เลยว่าโปรเจกต์นั้น crap ตามไปด้วย
ถ้าอยากเล่นกับ crap4j ตอนนี้มี Eclipse plug-in ให้ลอง prototype ดูได้
ที่มา – Artima
ดูชื่อแล้วไม่กล้าใช้กับงานตัวเอง
กลัว..
ความเห็น โดย bact' — ตุลาคม 9, 2007 @ 6:57 pm