Saya menggunakan SonarLint untuk Eclipse sejak baru-baru ini, dan itu banyak membantu saya. Namun, itu menimbulkan pertanyaan kepada saya tentang kompleksitas siklomatik.
SonarLint dianggap sebagai CC yang dapat diterima dari 10, dan ada beberapa kasus di mana saya berada di luarnya, sekitar 5 atau 6 unit. Bagian-bagian tersebut terkait dengan pemetaan di mana nilainya bergantung pada variabel yang berbeda, misalnya:
- Bidang A bergantung pada String sA;
- Field B bergantung pada String sB;
- Field C bergantung pada String sC;
- dll ...
Saya tidak punya pilihan lain yang menempatkan if
untuk setiap bidang. Ini bukan pilihan saya (untungnya) tetapi sistem yang sudah ada dan kompleks yang tidak dapat saya ubah sendiri.
Inti dari pertanyaan saya adalah: mengapa begitu penting untuk tidak memiliki CC yang terlalu tinggi dalam satu metode ? Jika Anda memindahkan beberapa kondisi Anda dalam satu atau lebih sub-metode untuk mengurangi kerumitan, itu tidak mengurangi biaya fungsi keseluruhan Anda, itu hanya memindahkan masalah ke tempat lain, saya kira?
(Maaf untuk kesalahan kecil, jika ada).
EDIT
Pertanyaan saya tidak merujuk pada kompleksitas siklomatik global, tetapi hanya pada kompleksitas metode tunggal dan pemisahan metode (saya kesulitan menjelaskan apa yang sebenarnya saya maksud, maaf). Saya bertanya mengapa bisa membagi kondisi Anda menjadi metode yang lebih kecil jika masih milik 'metode super', yang hanya akan mengeksekusi setiap sub-metode, sehingga menambah kompleksitas pada algoritme.
Namun, tautan kedua ( tentang pola anti ) sangat membantu.