Sobes.tech
Middle

Kokie yra procedūrinio stiliaus kodo vertinimo kriterijai, kurie gali būti geri, o kurie blogi?

sobes.tech AI

Atsakymas iš AI

Geri kriterijai:

  • Skaitomumas: Kiek lengva suprasti, ką kodas daro, jį skaitant iš viršaus į apačią.
  • Aiškūs kintamųjų ir funkcijų pavadinimai: Naudoti aprašomuosius pavadinimus, kurie atspindi jų paskirtį ir logiką.
  • Dekompresija: Sudėtingų užduočių suskaidymas į mažesnes, valdomas funkcijas. Kiekviena funkcija turėtų atlikti vieną konkretų uždavinį.
  • Vietinių kintamųjų nebuvimas: Minimalus globalių kintamųjų naudojimas, siekiant sumažinti priklausomybes ir šalutinius efektus.
  • Klaidų tvarkymas: Aiškus ir tikslus galimų klaidų ir išimčių tvarkymas.
  • Komentarai: Ten, kur kodas neaiškus arba logikos paaiškinimui.
  • Stiliaus nuoseklumas: Vienodas formatavimo ir pavadinimo stilius visame projekte.
  • Kodo dubliavimosi mažinimas: Vengti tų pačių ar labai panašių blokų kartojimo.
# Geras pavyzdys – dekompozicija ir aiškūs pavadinimai

def calculate_average(numbers):
    """Apskaičiuoja skaičių sąrašo vidurkį."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # Tarkime, kad 'data' yra sąrašas sąrašų su skaičiais
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

Blogi kriterijai:

  • Neaiškumas: Kodas sunkiai suprantamas dėl painios logikos, neefektyvių pavadinimų ar struktūros trūkumo.
  • "Spagetti" kodas: Daug perėjimų ir priklausomybių, kurios apsunkina vykdymo seką stebėti.
  • "Lazdynas"-kodas: Ilgos, monolitinės funkcijos, kurios atlieka daug nesusijusių užduočių.
  • Naudojant "maginius skaičius": Nepaaiškintos skaitinės konstantos kode.
  • Klaidų tvarkymo trūkumas: Programa "krenta" netikėtose situacijose.
  • Kodo dubliavimas: Tie patys arba labai panašūs blokai kartojasi skirtingose vietose.
  • Stiliaus neatitikimas: Skirtingas formatavimas ir pavadinimai, kurie apsunkina skaitymą.
# Blogas pavyzdys – "lazdynas" ir magiški skaičiai
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

Palyginimas:

Gerai Blogai
Skaitomumas Neaiškumas ("spagetti", "lazdynas")
Aiškūs pavadinimai Neaiškūs pavadinimai
Dekompozicija Monolitinės funkcijos
Glaudus globalių kintamųjų naudojimas Per didelis globalių kintamųjų naudojimas
Aiškus klaidų tvarkymas Trūksta klaidų tvarkymo
Komentarai reikalingose vietose Komentarų nėra
Nuoseklumas stiliaus Nenuoseklus stilius
Kodo dubliavimosi mažinimas Kodo dubliavimasis