Sobes.tech
Middle

Prosedürel tarzda kod değerlendirme kriterleri nelerdir ve hangileri iyi, hangileri kötü sayılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

İyi Kriterler:

  • Okunabilirlik: Kodu yukarıdan aşağıya okurken ne yaptığı ne kadar kolay anlaşılır.
  • Değişkenler ve fonksiyonların açıklığı: Amaçlarını ve mantıklarını yansıtan açıklayıcı isimler kullanımı.
  • Bölme: Karmaşık görevleri daha küçük ve yönetilebilir fonksiyonlara ayırma. Her fonksiyon belirli bir görevi yerine getirmeli.
  • Küresel değişkenlerin olmaması: Bağımlılıkları ve yan etkileri azaltmak için küresel değişken kullanımını en aza indirme.
  • Hata yönetimi: Olası hataların ve istisnaların açıkça ele alınması.
  • Yorumlar: Kodun anlaşılmadığı yerlerde veya mantığı açıklamak için bulunması.
  • Tutarlı stil: Tüm projede tutarlı biçimlendirme ve isimlendirme stili.
  • Kod tekrarını en aza indirme: Aynı kod bloklarının tekrar edilmesini önleme.
# İyi bir bölme ve açıklayıcı isim örneği
def calculate_average(numbers):
    """Bir sayı listesi ortalamasını hesaplar."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # 'data' bir sayı listeleri listesi varsayılır
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

Kötü Kriterler:

  • Anlaşılmazlık: Kod, karmaşık mantık, belirsiz isimler veya yapı eksikliği nedeniyle anlaşılması zordur.
  • "Spagetti kod": Birçok geçiş ve bağımlılık, yürütme sırasını takip etmeyi zorlaştırır.
  • "Lazo" kodu: Çok görevli uzun ve monolitik fonksiyonlar.
  • "Sihirli sayılar" kullanımı: Açıklanmayan sayısal sabitler.
  • Hata yönetiminin olmaması: Program, beklenmedik durumlarda "çöker".
  • Kod tekrarları: Aynı veya çok benzer kod bloklarının farklı yerlerde tekrarlanması.
  • Tutarsız stil: Farklı biçimlendirme ve isimlendirmeler.
# Kötü örnek "lazo" ve sihirli sayılar
def process(d):
    t = 0
    for r in d:
        s = 0
        c = 0
        for n in r:
            s += n
            c += 1
        if c > 0:
            t += s / c
    return t / len(d) if len(d) > 0 else 0

Karşılaştırma:

İyi kriterler Kötü kriterler
Okunabilirlik Anlaşılamazlık ("spagetti", "lazo")
Anlamlı değişken ve fonksiyon isimleri Anlamsız isimler
Bölme Monolitik fonksiyonlar
Küresel değişkenlerin olmaması Aşırı küresel değişken kullanımı
Açık hata yönetimi Hata yönetimi eksik
Gerekli yerlerde yorumlar Yorum eksik
Tutarlı stil Tutarsız stil
Kod tekrarını en aza indirme Kod tekrarları