Kompleksitas cyclomatic adalah cara untuk menentukan apakah kode Anda perlu di refactored. Kode dianalisis dan angka kerumitan ditentukan. Kompleksitas ditentukan dengan bercabang (jika pernyataan, dll.) Kompleksitas juga dapat memperhitungkan perhitungan loop, dll. Dan faktor-faktor lain tergantung pada algoritma yang digunakan.
Angka tersebut berguna pada level metode. Pada level yang lebih tinggi itu hanya angka.
Sejumlah 17.754 menunjukkan kompleksitas tingkat proyek (kode total), yang tidak memiliki banyak makna.
Mengebor kompleksitas tingkat kelas dan metode akan menentukan area kode yang perlu dire-refoured menjadi metode yang lebih kecil atau dirancang ulang untuk menghilangkan kompleksitas.
Pertimbangkan satu CASE
pernyataan dengan 50 kasus dalam satu metode. Mungkin setiap negara memiliki logika bisnis yang berbeda. Itu akan menghasilkan kompleksitas siklomatik 50. Ada 50 poin keputusan. Pernyataan CASE mungkin harus dirancang ulang menggunakan pola pabrik untuk menyingkirkan logika percabangan. Kadang-kadang Anda dapat melakukan refactor (memecah metode menjadi bagian-bagian yang lebih kecil) dan dalam beberapa kasus hanya mendesain ulang akan mengurangi kompleksitas.
Secara umum, untuk kompleksitas tingkat metode:
- <10 Mudah dirawat
- 11-20 Sulit dipertahankan
- 21+ Kandidat untuk refactoring / mendesain ulang
Juga pertimbangkan bahwa kompleksitas yang lebih tinggi membuat kode lebih sulit untuk unit test.
Kompleksitas tertinggi yang saya lihat pada metode tunggal adalah 560. Itu sekitar 2000 baris pernyataan if dalam satu metode. Pada dasarnya unmaintainable, unestable, penuh bug potensial. Bayangkan semua kasus uji unit yang diperlukan untuk logika percabangan itu! Tidak baik.
Coba dan simpan semua metode di bawah 20 dan sadari bahwa ada biaya untuk refactoring metode apa pun untuk membuatnya lebih kompleks.