ฉันกำลังใช้SonarLint สำหรับ Eclipseตั้งแต่เมื่อเร็ว ๆ นี้และมันช่วยฉันได้มาก อย่างไรก็ตามมันทำให้ฉันมีคำถามเกี่ยวกับความซับซ้อนของวัฏจักร
SonarLint ถือว่า CC ที่ยอมรับได้ของ 10 และมีบางกรณีที่ฉันเกินกว่านั้นประมาณ 5 หรือ 6 หน่วย ชิ้นส่วนเหล่านั้นเกี่ยวข้องกับตัวทำแผนที่ที่ค่าอาศัยตัวแปรที่แตกต่างกันตัวอย่างเช่น
- ฟิลด์ A อาศัยสตริง sA;
- ฟิลด์ B อาศัยสตริง sB;
- ฟิลด์ C อาศัย String sC;
- ฯลฯ ...
ฉันไม่มีทางเลือกอื่นที่วางif
สำหรับแต่ละฟิลด์ นี่ไม่ใช่ตัวเลือกของฉัน (โชคดี) แต่เป็นระบบที่ซับซ้อนและมีอยู่แล้วที่ฉันไม่สามารถเปลี่ยนแปลงได้ด้วยตัวเอง
หลักของคำถามของฉันคือเหตุผลที่มันเป็นสิ่งสำคัญมากที่จะได้มีซีซีสูงเกินไปในวิธีการเดียว ? หากคุณย้ายเงื่อนไขบางอย่างของคุณในวิธีย่อยอย่างน้อยหนึ่งวิธีเพื่อลดความซับซ้อนมันไม่ลดค่าใช้จ่ายโดยรวมของฟังก์ชั่นของคุณมันเป็นเพียงการเคลื่อนย้ายปัญหาที่อื่นฉันเดา?
(ขออภัยในความผิดพลาดเล็กน้อยหากมี)
แก้ไข
คำถามของฉันไม่ได้อ้างถึงความซับซ้อนของวัฏจักรโลก แต่มีเพียงความซับซ้อนของวิธีการเดียวและวิธีการแยก (ฉันมีเวลาคร่าวๆอธิบายสิ่งที่ฉันหมายถึงขอโทษ) ฉันถามว่าเพราะเหตุใดจึงอนุญาตให้แบ่งเงื่อนไขของคุณเป็นวิธีที่เล็กกว่าถ้ามันยังเป็นของ 'วิธีสุดยอด' ซึ่งจะดำเนินการทุกวิธีย่อยจึงเพิ่มความซับซ้อนให้อัลกอริทึม
อย่างไรก็ตามลิงค์ที่สอง ( เกี่ยวกับ anti-pattern ) นั้นมีประโยชน์อย่างมาก