Son zamanlardan beri Eclipse için SonarLint kullanıyorum ve bana çok yardımcı oldu. Ancak, bana siklomatik karmaşıklık hakkında bir soru yöneltti.
SonarLint kabul edilebilir bir CC 10 olarak kabul eder ve bunun ötesinde olduğum bazı durumlar vardır, yaklaşık 5 veya 6 birim. Bu parçalar, değerlerin farklı değişkenlere dayandığı haritacılarla ilişkilidir, örneğin:
- A Alanı sA dizesine dayanır;
- B alanı String sB'ye dayanır;
- C alanı String sC'ye dayanır;
- vb ...
if
Her alan için bir koyarak başka seçeneğim yok . Bu (neyse ki) seçimim değil, kendi başıma değiştiremediğim zaten var olan ve karmaşık bir sistem.
Sorumun özü şudur: Tek bir yöntemde çok yüksek bir CC'ye sahip olmamak neden bu kadar önemlidir ? Bazı koşullarınızı karmaşıklığı azaltmak için bir veya daha fazla alt yöntemde taşırsanız, genel işlevinizin maliyetini azaltmaz, sadece sorunu başka bir yere taşıyor, sanırım?
(Varsa küçük hatalar için özür dileriz).
DÜZENLE
Sorum, küresel siklomatik karmaşıklığa değil, sadece tek yöntem karmaşıklığına ve yöntem bölünmesine atıfta bulunuyor (Tam olarak ne demek istediğimi açıklamakta zorlanıyorum, üzgünüm). Neden hala her alt yöntemi yürütecek, böylece algoritmaya karmaşıklık ekleyen bir 'süper yönteme' aitse, koşullarınızı daha küçük yöntemlere bölmeye izin veriliyor mu soruyorum.
Bununla birlikte, ikinci bağlantı ( anti-desen hakkında ) çok yardımcıdır.