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ı |