Middle
Milyen értékelési szempontok vannak a procedurális stílusú kódhoz, és melyek jók, melyek rosszak?
sobes.tech MI
Válasz az MI-től
Jó kritériumok:
- Olvashatóság: Mennyire könnyű megérteni, mit csinál a kód, ha végigolvassuk felülről lefelé.
- Változók és függvények érthetősége: Leíró nevek használata, amelyek tükrözik azok célját és logikáját.
- Felbontás: Komplex feladatok kisebb, kezelhetőbb függvényekre bontása. Minden függvénynek egy konkrét feladatot kell ellátnia.
- Globális változók hiánya: A globális változók használatának minimalizálása a függőségek és mellékhatások csökkentése érdekében.
- Hibakezelés: Világos hibakezelés és kivételkezelés.
- Megjegyzések: Ott vannak, ahol a kód nem egyértelmű vagy a logika magyarázatára.
- Stílus egységessége: Egységes formázási és névadási stílus az egész projektben.
- Kódduplikáció minimalizálása: Azonos vagy nagyon hasonló kódrészek ismétlésének elkerülése.
# Jó példa a felbontásra és érthető nevek használatára
def calculate_average(numbers):
"""Számok listájának átlagát számolja ki."""
if not numbers:
return 0
total = sum(numbers)
return total / len(numbers)
def process_data(data):
# Feltételezzük, hogy a 'data' egy listák listája számoknak
averages = []
for row in data:
avg = calculate_average(row)
averages.append(avg)
return averages
Rossz kritériumok:
- Nem egyértelmű: A kód nehezen érthető összezavarodott logika, nem megfelelő nevek vagy struktúra hiánya miatt.
- "Spagetti kód": Sok átmenet és függőség, amelyek megnehezítik a végrehajtási sorrend követését.
- "Laska"-kód: Hosszú, monolitikus függvények, amelyek több, összefüggéstelen feladatot látnak el.
- "Varázsszámok" használata: Magyarázat nélküli numerikus konstansok a kódban.
- Hibakezelés hiánya: A program "összeomlik" váratlan helyzetekben.
- Kódduplikáció: Ugyanazok vagy nagyon hasonló kódrészek ismétlődnek különböző helyeken.
- Stílus hiánya: Különböző formázás és névadás megnehezíti az olvasást.
# Rossz példa "laska"-ra és varázsszámokra
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
Összehasonlítás:
| Jó | Rossz |
|---|---|
| Olvashatóság | Nem egyértelmű ("spagetti", "laska") |
| Érthető változók és függvények | Olvashatatlan nevek |
| Felbontás | Monolitikus függvények |
| Globális változók hiánya | Túlzott globális változók használata |
| Hibakezelés világosan | Hibakezelés hiánya |
| Megjegyzések ott, ahol szükséges | Hiányzó megjegyzések |
| Stílus egységessége | Nem egységes stílus |
| Kódduplikáció minimalizálása | Kódduplikáció |