Sobes.tech
Middle

Aké kritériá hodnotenia kódu v procedurálnom štýle možno považovať za dobré a aké za zlé?

sobes.tech AI

Odpoveď od AI

Dobrý kritériá:

  • Čitateľnosť: Ako ľahko je pochopiť, čo kód robí, ak ho čítame odhora nadol.
  • Zrozumiteľné názvy premenných a funkcií: Použitie opisných názvov odrážajúcich ich účel a logiku.
  • Dekompozícia: Rozdelenie zložitých úloh na menšie, zvládnuteľné funkcie. Každá funkcia by mala plniť jeden konkrétny úloh.
  • Absencia globálnych premenných: Minimalizácia používania globálnych premenných na zníženie závislostí a vedľajších efektov.
  • Spracovanie chýb: Jasné spracovanie možných chýb a výnimiek.
  • Komentáre: Sú tam, kde kód nie je jasný alebo na vysvetlenie logiky.
  • Konzistentnosť štýlu: Jednotný štýl formátovania a pomenovania v celom projekte.
  • Minimalizácia duplikácie kódu: Vyhýbanie sa opakovaniu tých istých blokov kódu.
# Dobrý príklad dekompozície a zrozumiteľných názvov
def calculate_average(numbers):
    """Vypočíta priemernú hodnotu zoznamu čísel."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # Predpokladáme, že 'data' je zoznam zoznamov čísel
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

Zlé kritériá:

  • Nejasnosť: Kód je ťažko pochopiteľný kvôli zmätenej logike, neefektívnym menám alebo absencii štruktúry.
  • "Špagetový kód": Množstvo prechodov a závislostí, ktoré sťažujú sledovanie sekvencie vykonávania.
  • "Líza"-kód: Dlhé, monolitické funkcie, ktoré vykonávajú viac nesúvisiacich úloh.
  • Použitie "magických čísel": Nepopísané číselné konštanty v kóde.
  • Chýbajúca správa chýb: Program "padá" pri neočakávaných situáciách.
  • Dvojitý kód: Rovnaké alebo veľmi podobné bloky kódu sa opakujú na rôznych miestach.
  • Nesúlad v štýle: Rôzne formátovanie a pomenovanie sťažujú čítanie.
# Zlý príklad "lízneho" a magických čísel
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

Porovnanie:

Dobré Zlé
Čitateľnosť Nejasnosť ("špaget", "líza")
Zrozumiteľné názvy premenných a funkcií Nečitateľné mená
Dekompozícia Monolitické funkcie
Absencia globálnych premenných Nadmerné používanie globálnych premenných
Jasná správa chýb Chýbajúca správa chýb
Komentáre tam, kde je potrebné Chýbajúce komentáre
Konzistentnosť štýlu Nekonzistentný štýl
Minimalizácia duplikácie kódu Duplicita kódu