Cognitive Complexity (Bilişsel Karmaşıklık), bir kod bloğunun veya bir fonksiyonun anlaşılabilirliğini ölçen bir metrik olup, özellikle bir kişinin bu kodu okurken ve anlamaya çalışırken ne kadar zihinsel çaba harcadığını gösterir. Bu metrik, klasik Cyclomatic Complexity'nin bir uzantısıdır, ancak kodun okunabilirliğine daha fazla odaklanır.
Hedefi: Kodun ne kadar "zor" olduğunu ölçmek ve daha okunabilir, basit kod yazmayı teşvik etmektir.
Temel Faktörler:
Kontrol Yapıları: if, else, for, while, switch gibi kontrol akış yapılarını artırır.
Dallanma ve Döngüler: Kodda dallanmalar ve iç içe döngüler arttıkça karmaşıklık yükselir.
Gömülü Yapılar: Bir yapı içinde başka bir kontrol yapısının bulunması (örneğin, iç içe if blokları) karmaşıklığı artırır.
Koşulların Birleştirilmesi: Birden fazla koşulun tek satırda kullanılması (if (a && b || c)) okunabilirliği düşürür.
Genel Tavsiyeler:
Fonksiyonlar için 10 veya daha az.
Kodun tümü için 15-20 arasında tutulması önerilir.
Karmaşık işlevler gerekliyse bile, mümkün olduğunca 50'nin altında olmalıdır.
Daha yüksek değerler, kodun anlaşılmasını ve bakımını zorlaştırır.
Kodunuzu Modülerleştirin:
Büyük fonksiyonları daha küçük, anlamlı parçalara bölün.
Her fonksiyon bir işi yapmalı ve bu işi iyi yapmalı (Single Responsibility Principle).
İç İçe Yapıları Azaltın:
İç içe if-else ve döngüleri en aza indirin.
Örneğin, iç içe döngüler yerine bir kontrol fonksiyonu kullanabilirsiniz.
Koşulları Sadeleştirin:
Birden fazla koşulu ayrı satırlara bölün veya yardımcı değişkenler kullanın.
Erken Dönüş (Early Return) Kullanın:
Karmaşık if-else zincirleri yerine, koşulları kontrol ettikten sonra erken çıkış yapın.
Daha Az Sayıda Mantık Kullanımı:
Tek bir if içinde çok fazla && ve || kullanmamaya çalışın.
Karmaşık Döngüleri Basitleştirin:
Döngü içindeki kodu ayrı bir fonksiyona taşıyın.
Kod İnceleme ve Refaktör:
Karmaşıklığı yüksek olan kodları düzenli olarak gözden geçirin ve refaktör yapın.
Testler ve kod incelemeleri sırasında bilişsel karmaşıklığa dikkat edin.
Bilişsel karmaşıklık, kodun okunabilirliğini ve sürdürülebilirliğini etkileyen önemli bir metriktir. Düşük karmaşıklık, ekiplerin kodu daha kolay anlamasına, hataları daha hızlı bulmasına ve kodun uzun vadeli bakımını kolaylaştırmasına yardımcı olur. Kodda modülerlik, sadeleştirme ve erken dönüş gibi iyi pratikler uygulandığında bilişsel karmaşıklık düşürülebilir.
*Gönderi ve görsel chatgpt ile oluşturulmuştur.