Middle
Welke beoordelingscriteria voor code in procedurele stijl kunnen als goed en welke als slecht worden beschouwd?
sobes.tech AI
Antwoord van AI
Goede criteria:
- Leesbaarheid: Hoe gemakkelijk is het om te begrijpen wat de code doet door het van boven naar beneden te lezen.
- Duidelijkheid van variabelen en functies: Gebruik van beschrijvende namen die hun doel en logica weerspiegelen.
- Decompositie: Het opdelen van complexe taken in kleinere, beheersbare functies. Elke functie moet een specifiek doel hebben.
- Afwezigheid van globale variabelen: Minimaliseren van het gebruik van globale variabelen om afhankelijkheden en bijwerkingen te verminderen.
- Foutafhandeling: Expliciete afhandeling van mogelijke fouten en uitzonderingen.
- Commentaar: Aanwezig waar de code niet duidelijk is of om de logica uit te leggen.
- Consistente stijl: Eendrachtige stijl van formatteren en benoemen in het hele project.
- Minimaliseren van code duplicatie: Vermijden dat dezelfde codeblokken worden herhaald.
# Goed voorbeeld van decompositie en duidelijke namen
def calculate_average(numbers):
"""Bereken het gemiddelde van een lijst getallen."""
if not numbers:
return 0
total = sum(numbers)
return total / len(numbers)
def process_data(data):
# We gaan ervan uit dat 'data' een lijst van lijsten met getallen is
averages = []
for row in data:
avg = calculate_average(row)
averages.append(avg)
return averages
Slechte criteria:
- Onduidelijkheid: De code is moeilijk te begrijpen vanwege verwarrende logica, onduidelijke namen of gebrek aan structuur.
- "Spaghetticode": Veel overgangen en afhankelijkheden die het moeilijk maken de uitvoering te volgen.
- "Lazo"-code: Lange, monolithische functies die veel niet-verwante taken uitvoeren.
- Gebruik van "magische getallen": Onverklaarde numerieke constanten in de code.
- Gebrek aan foutafhandeling: Het programma "crasht" bij onvoorziene situaties.
- Code duplicatie: Identieke of zeer vergelijkbare blokken code worden op verschillende plaatsen herhaald.
- Inconsistente stijl: Verschillende opmaak en naamgeving die het lezen bemoeilijken.
# Slecht voorbeeld van "lazo" en magische getallen
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
Vergelijking:
| Goede criteria | Slechte criteria |
|---|---|
| Leesbaarheid | Onduidelijkheid ("spaghetticode", "lazo") |
| Begrijpelijke variabelen en functies | Onleesbare namen |
| Decompositie | Monolithische functies |
| Afwezigheid van globale variabelen | Overmatig gebruik van globale variabelen |
| Expliciete foutafhandeling | Ontbrekende foutafhandeling |
| Commentaar waar nodig | Ontbrekende commentaren |
| Consistente stijl | Inconsistente stijl |
| Minimaliseren van code duplicatie | Duplicatie van code |