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 |