Độ phức tạp theo chu kỳ là một trong nhiều phép đo độ phức tạp của mã. Ví dụ: trong Visual Studio, chỉ số bảo trì phụ thuộc vào:
- Phức tạp cyclomatic,
- Độ sâu của thừa kế,
- Khớp nối lớp
- Các dòng mã IL (mã IL là mã nguồn được biên dịch sang Ngôn ngữ trung gian, sau đó được biên dịch JIT).
Mọi phép đo đó, cũng như các phép đo phức tạp khác, đều hoạt động bằng cách nào đó, nhưng không bao giờ là dấu hiệu tuyệt đối cho thấy mã nguồn có vấn đề phức tạp . Một số phép đo, như LỘC, được biết là hoàn toàn vô nghĩa và sai lệch; những người khác, như phức tạp chu kỳ, tốt hơn một chút, nhưng vẫn có vấn đề.
Điều này là do thực tế rằng:
Quá phức tạp đối với một chương trình máy tính để biết mã nguồn thực sự phức tạp như thế nào bởi nhà phát triển .
Ví dụ, tôi thường nhận thấy sự sụt giảm rất lớn của chỉ số bảo trì khi tái cấu trúc mã từ kiểu thủ tục sang kiểu chức năng thông qua LINQ, biến một khối mã nguồn rất khó đọc thành một biểu thức chuỗi đơn cực kỳ rõ ràng.
Một ví dụ khác là sự phản ánh của các mẫu lập trình trên các số liệu. Thông thường, bằng cách đưa các mẫu lập trình vào mã của bạn, bạn sẽ làm cho nó trở nên ít phức tạp hơn đối với nhà phát triển (giả sử nhà phát triển này quen thuộc với các mẫu đó), nhưng chỉ số bảo trì sẽ giảm.
Mã nguồn có thể có các hình thức khác nhau.
Đo độ phức tạp hoặc độ sâu của tính kế thừa hoặc khớp nối lớp rất hạn chế đối với một ứng dụng web, bởi vì, như bạn đã nói, sự tồn tại của HTML / CSS, JavaScript, v.v., và như đã lưu ý trong các nhận xét, sự tồn tại của quyền truy cập cơ sở dữ liệu.
Giới hạn này không chỉ tồn tại cho các ứng dụng web. Trong các ứng dụng máy tính để bàn, chẳng hạn, sự phức tạp của bố cục UI (mã XAML trong các ứng dụng Windows) thì sao? Những gì về mã được tạo ra? Hoặc truy cập cơ sở dữ liệu?