Middle
Jaké kritéria hodnocení kódu ve stylu procedurálního programování lze považovat za dobrá a která za špatná?
sobes.tech AI
Odpověď od AI
Dobrá kritéria:
- Čitelnost: Jak snadno pochopit, co kód dělá při čtení shora dolů.
- Srozumitelná jména proměnných a funkcí: Použití popisných názvů odrážejících jejich účel a logiku.
- Dekompozice: Rozdělení složitých úkolů na menší, zvládnutelné funkce. Každá funkce by měla plnit jeden konkrétní úkol.
- Absence globálních proměnných: Minimalizace používání globálních proměnných ke snížení závislostí a vedlejších efektů.
- Ošetření chyb: Jasné ošetření možných chyb a výjimek.
- Komentáře: Přítomny tam, kde kód není zřejmý nebo pro vysvětlení logiky.
- Konzistence stylu: Jednotný styl formátování a pojmenovávání v celém projektu.
- Minimalizace duplicitního kódu: Vyhýbání se opakování stejných bloků kódu.
# Dobrá ukázka dekompozice a srozumitelných jmen
def calculate_average(numbers):
"""Vypočítá průměr seznamu čísel."""
if not numbers:
return 0
total = sum(numbers)
return total / len(numbers)
def process_data(data):
# Předpokládáme, že 'data' je seznam seznamů čísel
averages = []
for row in data:
avg = calculate_average(row)
averages.append(avg)
return averages
Špatná kritéria:
- Nejasnost: Kód je těžko pochopitelný kvůli zmatené logice, neefektivním jménům nebo absenci struktury.
- "Špagetový kód": Mnoho přechodů a závislostí, které činí sledování sekvence provádění obtížným.
- "Lívanec"-kód: Dlouhé, monolitické funkce, které vykonávají mnoho nesouvisejících úkolů.
- Použití "magických čísel": Nepopsané číselné konstanty v kódu.
- Chybějící ošetření chyb: Program "padá" při neočekávaných situacích.
- Duplicitní kód: Stejné nebo velmi podobné bloky kódu se opakují na různých místech.
- Nesourodý styl: Různé formátování a pojmenování ztěžují čtení.
# Špatný příklad "líné" 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
Porovnání:
| Dobré | Špatné |
|---|---|
| Čitelnost | Nejasnost ("špaget", "lívanec") |
| Srozumitelná jména proměnných a funkcí | Nečitelná jména |
| Dekompozice | Monolitické funkce |
| Absence globálních proměnných | Nadměrné používání globálních proměnných |
| Jasné ošetření chyb | Chybějící ošetření chyb |
| Komentáře tam, kde je třeba | Chybějící komentáře |
| Konzistence stylu | Nekonzistentní styl |
| Duplicitní kód minimalizace | Duplicitní kód |