Tôi đang sử dụng SonarLint cho Eclipse từ gần đây và nó đã giúp tôi rất nhiều. Tuy nhiên, nó đặt ra cho tôi một câu hỏi về độ phức tạp chu kỳ.
SonarLint coi là chấp nhận được CC 10, và có một số trường hợp tôi vượt quá nó, khoảng 5 hoặc 6 đơn vị. Các phần đó có liên quan đến các trình ánh xạ trong đó các giá trị phụ thuộc vào các biến khác nhau, ví dụ:
- Trường A dựa vào Chuỗi sA;
- Trường B dựa vào Chuỗi sB;
- Trường C dựa vào Chuỗi sC;
- Vân vân ...
Tôi không có lựa chọn nào khác là đặt một if
cho mỗi lĩnh vực. Đây không phải là lựa chọn của tôi (may mắn thay) mà là một hệ thống đã tồn tại và phức tạp mà tôi không thể tự thay đổi.
Cốt lõi của câu hỏi của tôi là: tại sao việc không có CC quá cao trong một phương pháp lại quan trọng đến vậy? Nếu bạn di chuyển một số điều kiện của bạn theo một hoặc nhiều phương thức phụ để giảm độ phức tạp, thì nó không làm giảm chi phí cho chức năng tổng thể của bạn, nó chỉ là chuyển vấn đề đi nơi khác, tôi đoán vậy?
(Xin lỗi vì những lỗi nhỏ, nếu có).
BIÊN TẬP
Câu hỏi của tôi không đề cập đến độ phức tạp chu kỳ toàn cầu, mà chỉ liên quan đến độ phức tạp của phương thức và phân tách phương thức (tôi có một thời gian khó khăn để giải thích chính xác ý tôi là gì, xin lỗi). Tôi đang hỏi tại sao có thể phân chia các điều kiện của bạn thành các phương thức nhỏ hơn nếu nó vẫn thuộc về một 'siêu phương thức', nó sẽ chỉ thực hiện mọi phương thức phụ, do đó thêm độ phức tạp cho thuật toán.
Tuy nhiên, liên kết thứ hai ( về mô hình chống ) rất hữu ích.