Middle
Welche Bewertungsmaßstäbe für Code im prozeduralen Stil können als gut und welche als schlecht angesehen werden?
sobes.tech KI
Antwort von AI
Gute Kriterien:
- Lesbarkeit: Wie leicht ist es zu verstehen, was der Code macht, wenn man ihn von oben nach unten liest.
- Klarheit bei Variablen und Funktionen: Verwendung beschreibender Namen, die Zweck und Logik widerspiegeln.
- Zerlegung: Aufteilung komplexer Aufgaben in kleinere, handhabbare Funktionen. Jede Funktion sollte eine konkrete Aufgabe erfüllen.
- Fehlen von globalen Variablen: Minimierung der Verwendung globaler Variablen, um Abhängigkeiten und Nebenwirkungen zu verringern.
- Fehlerbehandlung: Explizite Behandlung möglicher Fehler und Ausnahmen.
- Kommentare: Vorhanden dort, wo der Code nicht offensichtlich ist oder um die Logik zu erklären.
- Konsistenter Stil: Einheitlicher Formatierungs- und Benennungstil im gesamten Projekt.
- Minimierung von Code-Duplikation: Vermeidung der Wiederholung gleicher Codeblöcke.
# Gutes Beispiel für Zerlegung und klare Namen
def calculate_average(numbers):
"""Berechnet den Durchschnitt einer Liste von Zahlen."""
if not numbers:
return 0
total = sum(numbers)
return total / len(numbers)
def process_data(data):
# Angenommen, 'data' ist eine Liste von Listen von Zahlen
averages = []
for row in data:
avg = calculate_average(row)
averages.append(avg)
return averages
Schlechte Kriterien:
- Unklarheit: Der Code ist schwer verständlich wegen verworrener Logik, unklarer Namen oder fehlender Struktur.
- "Spaghetti-Code": Viele Übergänge und Abhängigkeiten, die die Ausführungskette schwer nachvollziehbar machen.
- "Lazo"-Code: Lange, monolithische Funktionen, die viele unzusammenhängende Aufgaben ausführen.
- Verwendung von "magischen Zahlen": Nicht erklärte numerische Konstanten im Code.
- Fehlende Fehlerbehandlung: Das Programm "stürzt ab" bei unerwarteten Situationen.
- Code-Duplikation: Gleiche oder sehr ähnliche Codeblöcke werden an verschiedenen Stellen wiederholt.
- Inkonsequenter Stil: Unterschiedliche Formatierungen und Benennungen erschweren das Lesen.
# Schlechte Beispiel für "Lazo" und magische Zahlen
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
Vergleich:
| Gute Kriterien | Schlechte Kriterien |
|---|---|
| Lesbarkeit | Unklarheit ("Spaghetti", "Lazo") |
| Verständliche Variablen und Funktionen | Unleserliche Namen |
| Zerlegung | Monolithische Funktionen |
| Keine globalen Variablen | Übermäßiger Einsatz globaler Variablen |
| Explizite Fehlerbehandlung | Fehlende Fehlerbehandlung |
| Kommentare dort, wo sie notwendig sind | Fehlende Kommentare |
| Konsistenter Stil | Inkonsistenter Stil |
| Minimierung der Code-Duplikation | Code-Duplikation |