02 Übung: PEP 8 - Level 2: Mehrfache Probleme
October 2025 (4162 Words, 24 Minutes)
Einführung
Willkommen zu den Level 2 PEP 8 Übungen! Diese Übungen sind darauf ausgelegt, Ihnen zu helfen, ein geschärftes Auge für mehrere Code-Qualitätsprobleme gleichzeitig zu entwickeln.
Lernziele:
- 3-5 PEP 8-Verstöße in einem einzelnen Code-Snippet identifizieren
- Verstehen, wie mehrere Stilprobleme die Lesbarkeit verschlechtern
- Systematische Code-Review-Fähigkeiten üben
- Selbstvertrauen beim Erkennen von Mustern aufbauen
Anleitung:
- Lesen Sie jedes Code-Beispiel sorgfältig
- Versuchen Sie, ALLE PEP 8-Verstöße zu finden, bevor Sie die Lösung ansehen
- Schreiben Sie Ihre Antworten auf (empfohlen für besseres Lernen)
- Klicken Sie erst auf “Lösung anzeigen”, nachdem Sie die Übung versucht haben
- Vergleichen Sie Ihre Ergebnisse mit der bereitgestellten Lösung
Schwierigkeit: Fortgeschritten
Zeit: 5-10 Minuten pro Übung
Voraussetzungen: Schließen Sie zuerst die Level 1 Übungen ab
Übung 2.1: Datenverarbeitungsfunktion
Problem
import sys,os
import numpy as np
def ProcessData(input_list,threshold=10):
result=[]
for item in input_list:
if item>threshold:result.append(item*2)
return result
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 5-7 Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
Ihre Aufgabe
Bevor Sie die Lösung prüfen, versuchen Sie:
- Jeden Verstoß aufzulisten, den Sie finden
- Die Zeilennummer für jeden Verstoß zu notieren
- Den korrigierten Code selbst zu schreiben
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 1: Mehrere Imports in einer Zeile (
sys,os)- Regel: Imports sollten normalerweise in separaten Zeilen stehen
- Zeile 1: Ungenutzte Imports (
sysundoswerden nie verwendet)- Regel: Entfernen Sie ungenutzte Imports, um den Code sauber zu halten
- Zeile 4: Funktionsname verwendet PascalCase statt snake_case (
ProcessData)- Regel: Funktionsnamen sollten klein geschrieben sein mit Wörtern getrennt durch Unterstriche
- Zeile 4: Fehlendes Leerzeichen nach Komma in Parametern (
input_list,threshold)- Regel: Verwenden Sie Leerzeichen nach Kommas in Parameterlisten
- Zeile 5: Fehlende Leerzeichen um Zuweisungsoperator (
result=[])- Regel: Umgeben Sie Operatoren immer mit einem einzelnen Leerzeichen auf jeder Seite
- Zeile 7: Fehlende Leerzeichen um Vergleichsoperator (
item>threshold)- Regel: Umgeben Sie binäre Operatoren immer mit Leerzeichen
- Zeile 7: Mehrere Anweisungen in einer Zeile (
:result.append)- Regel: Zusammengesetzte Anweisungen (mehrere Anweisungen in derselben Zeile) werden generell nicht empfohlen
Korrigierte Version
import numpy as np
def process_data(input_list, threshold=10):
result = []
for item in input_list:
if item > threshold:
result.append(item * 2)
return result
Wichtige Erkenntnisse
- Das Entfernen ungenutzter Imports reduziert Unordnung und Startzeit
- PascalCase ist für Klassen, snake_case ist für Funktionen
- Leerzeichen um Operatoren verbessern die Lesbarkeit erheblich
- Eine Anweisung pro Zeile macht Code einfacher zu debuggen und zu verstehen
Übung 2.2: Road Profile Generator
Problem
from dash import Dash,html,dcc
import numpy as np
import sys
def generate_road_profile(num_points=100,x_max=80):
x=np.linspace(0,x_max,num_points)
y=0.015*x**3+0.3*np.sin(2*np.pi*x)
return x,y
camera_position={'x':0,'y':2.0,'z':1.5}
MAX_distance=100
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 10-12 Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
Hinweise
- Überprüfen Sie Import-Anweisungen sorgfältig
- Suchen Sie nach Abstandsproblemen um Operatoren
- Untersuchen Sie die Dictionary-Formatierung
- Berücksichtigen Sie Namenskonventionen für Konstanten
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 1: Mehrere Imports in einer Zeile (
Dash,html,dcc)- Regel: Imports sollten in separaten Zeilen stehen
- Zeile 1: Fehlende Leerzeichen nach Kommas im Import
- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 3: Ungenutzter Import (
sys)- Regel: Entfernen Sie ungenutzte Imports
- Zeile 5: Fehlendes Leerzeichen nach Komma in Parametern (
num_points=100,x_max=80)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 6: Fehlende Leerzeichen um Zuweisung (
x=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 6: Fehlende Leerzeichen nach Kommas (
0,x_max,num_points)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 7: Fehlende Leerzeichen um Zuweisung (
y=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 7: Fehlende Leerzeichen um Multiplikationsoperatoren (
0.015*x,0.3*np.sin)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 7: Fehlende Leerzeichen um Additionsoperator (
x**3+0.3)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 8: Fehlendes Leerzeichen nach Komma in return (
x,y)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 10: Fehlende Leerzeichen nach Doppelpunkten im Dict (
'x':0,'y':2.0,'z':1.5)- Regel: Verwenden Sie Leerzeichen nach Doppelpunkten in Dictionaries
- Zeile 11: Inkonsistente Konstantenbenennung (
MAX_distancesollte komplett groß geschrieben sein)- Regel: Konstanten sollten UPPER_CASE mit Unterstrichen verwenden
Korrigierte Version
from dash import Dash, dcc, html
import numpy as np
def generate_road_profile(num_points=100, x_max=80):
x = np.linspace(0, x_max, num_points)
y = 0.015 * x**3 + 0.3 * np.sin(2 * np.pi * x)
return x, y
camera_position = {'x': 0, 'y': 2.0, 'z': 1.5}
MAX_DISTANCE = 100
Wichtige Erkenntnisse
- Import-Organisation: Alphabetisch sortieren innerhalb gruppierter Imports
- Mathematische Ausdrücke benötigen Leerzeichen um Operatoren (außer
**, was optional ist) - Dictionary-Formatierung:
{key: value}nicht{key:value} - Konstantenbenennung: ALLE_GROSSBUCHSTABEN für Konstanten auf Modulebene
Übung 2.3: Hilfsfunktionen
Problem
import numpy as np
from typing import List
def HelperFunction(val):
result=val*2
return result
def another_helper(x,y,z): return x+y+z
def calculate_distance(point1,point2):
dx=point2[0]-point1[0]
dy=point2[1]-point1[1]
return np.sqrt(dx**2+dy**2)
# This is a very long comment that definitely exceeds the recommended 79 character limit for code readability
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 10-12 Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
Herausforderung
Diese Übung testet Ihre Fähigkeit zu erkennen:
- Verstöße gegen Namenskonventionen
- Leerzeichenprobleme in mehreren Kontexten
- Zeilenlängenprobleme
- Probleme mit zusammengesetzten Anweisungen
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 4: Funktionsname verwendet PascalCase (
HelperFunction)- Regel: Funktionsnamen sollten snake_case verwenden
- Zeile 5: Fehlende Leerzeichen um Zuweisungsoperator (
result=val*2)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 5: Fehlende Leerzeichen um Multiplikationsoperator (
val*2)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 8: Fehlende Leerzeichen nach Kommas (
x,y,z)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 8: Mehrere Anweisungen in einer Zeile nach Doppelpunkt
- Regel: Vermeiden Sie zusammengesetzte Anweisungen
- Zeile 10: Fehlende Leerzeichen nach Kommas (
point1,point2)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 11: Fehlende Leerzeichen um Zuweisung (
dx=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 11: Fehlende Leerzeichen um Subtraktionsoperatoren
- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 12: Fehlende Leerzeichen um Zuweisung (
dy=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 12: Fehlende Leerzeichen um Subtraktionsoperatoren
- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 13: Fehlende Leerzeichen um Additionsoperator (
dx**2+dy**2)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 15: Zeile zu lang (überschreitet 79/88 Zeichen Limit)
- Regel: Beschränken Sie Zeilen auf maximal 79 Zeichen (oder 88 mit modernen Tools)
Korrigierte Version
import numpy as np
from typing import List
def helper_function(val):
result = val * 2
return result
def another_helper(x, y, z):
return x + y + z
def calculate_distance(point1, point2):
dx = point2[0] - point1[0]
dy = point2[1] - point1[1]
return np.sqrt(dx**2 + dy**2)
# Dies ist ein Kommentar, der ordnungsgemäß auf
# mehrere Zeilen aufgeteilt wurde für bessere Lesbarkeit
Wichtige Erkenntnisse
- Funktionsnamen: immer snake_case verwenden, niemals PascalCase
- Zusammengesetzte Anweisungen verbergen Logik und erschweren das Debuggen
- Lange Kommentare sollten auf mehrere Zeilen aufgeteilt werden
- Konsistente Abstände machen mathematische Ausdrücke viel lesbarer
- Jeder Operator verdient Freiraum (außer
**, wo es optional ist)
Übung 2.4: Klassendefinition
Problem
import sys,os,json
class DataProcessor:
def __init__(self,data,config=None):
self.data=data
self.config=config if config else {}
def Process(self,threshold=0):
filtered=[x for x in self.data if x>threshold]
return filtered
def GetStats(self):
return {'mean':np.mean(self.data),'std':np.std(self.data)}
max_items=1000
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 12-15 Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
Extra-Herausforderung
Können Sie das Bonusproblem erkennen, das nicht strikt PEP 8 ist, aber einen Laufzeitfehler verursachen würde?
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 1: Mehrere Imports in einer Zeile (
sys,os,json)- Regel: Imports sollten in separaten Zeilen stehen
- Zeile 1: Alle drei Imports sind ungenutzt
- Regel: Entfernen Sie ungenutzte Imports
- Zeile 4: Fehlende Leerzeichen nach Kommas (
data,config)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 5: Fehlende Leerzeichen um Zuweisung (
self.data=data)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 6: Fehlende Leerzeichen um Zuweisung (
self.config=config)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 8: Methodenname verwendet PascalCase statt snake_case (
Process)- Regel: Methodennamen sollten snake_case verwenden
- Zeile 8: Fehlendes Leerzeichen nach Komma (
Process(self,threshold)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 9: Fehlende Leerzeichen um Zuweisung (
filtered=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 9: Fehlende Leerzeichen um Vergleich (
x>threshold)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 12: Methodenname verwendet PascalCase (
GetStats)- Regel: Methodennamen sollten snake_case verwenden
- Zeile 13: Fehlende Leerzeichen nach Doppelpunkten im Dict (
'mean':,'std':)- Regel: Verwenden Sie Leerzeichen nach Doppelpunkten in Dictionaries
- Zeile 15: Variable sollte UPPER_CASE verwenden (
max_items→MAX_ITEMS)- Regel: Konstanten auf Modulebene sollten UPPER_CASE verwenden
- BONUS:
npwird verwendet, aber nie importiert (würdeNameErrorverursachen)- Problem: Fehlendes
import numpy as np
- Problem: Fehlendes
Korrigierte Version
import numpy as np
class DataProcessor:
def __init__(self, data, config=None):
self.data = data
self.config = config if config else {}
def process(self, threshold=0):
filtered = [x for x in self.data if x > threshold]
return filtered
def get_stats(self):
return {'mean': np.mean(self.data), 'std': np.std(self.data)}
MAX_ITEMS = 1000
Wichtige Erkenntnisse
- Importieren Sie nur, was Sie verwenden—ungenutzte Imports sind Ballast
- Methodennamen folgen denselben Regeln wie Funktionsnamen: snake_case
- Dictionary-Abstände:
{key: value}schafft klare Schlüssel-Wert-Trennung - Konstanten auf Modulebene verwenden UPPER_CASE, um “nicht modifizieren” zu signalisieren
- Testen Sie immer Ihren Code—PEP 8 fängt keine Logikfehler!
Übung 2.5: Komplexe Funktion
Problem
from typing import List,Tuple
import numpy as np
def find_intersection(x_road,y_road,angle_degrees,camera_x=0,camera_y=1.5):
angle_rad=np.radians(angle_degrees)
ray_dx=np.cos(angle_rad)
ray_dy=np.sin(angle_rad)
for i in range(len(x_road)-1):
x1,y1=x_road[i],y_road[i]
x2,y2=x_road[i+1],y_road[i+1]
# Check intersection - this calculation is complex and might need refactoring for better maintainability
t=((camera_y-y1)*ray_dx-(camera_x-x1)*ray_dy)/((x2-x1)*ray_dy-(y2-y1)*ray_dx)
if 0<=t<=1:
x_intersect=x1+t*(x2-x1)
return x_intersect,y1+t*(y2-y1)
return None,None
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 15+ Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
Experten-Level
Dies ist die komplexeste Übung. Sie enthält Verstöße in:
- Import-Anweisungen
- Funktionsparametern
- Variablenzuweisungen
- Mathematischen Ausdrücken
- Vergleichsoperatoren
- Kommentaren
- Return-Anweisungen
Nehmen Sie sich Zeit und gehen Sie systematisch vor!
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 1: Mehrere Imports in einer Zeile (
List,Tuple)- Regel: Imports sollten in separaten Zeilen stehen (gilt auch für
from-Imports)
- Regel: Imports sollten in separaten Zeilen stehen (gilt auch für
- Zeile 4: Fehlende Leerzeichen nach Kommas in allen Parametern
- Regel: Verwenden Sie Leerzeichen nach Kommas (betrifft 4 Kommas)
- Zeile 5: Fehlende Leerzeichen um Zuweisung (
angle_rad=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 6: Fehlende Leerzeichen um Zuweisung (
ray_dx=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 7: Fehlende Leerzeichen um Zuweisung (
ray_dy=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 9: Fehlende Leerzeichen um Subtraktion (
len(x_road)-1)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 10: Fehlende Leerzeichen nach Kommas (
x1,y1undx_road[i],y_road[i])- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 11: Fehlende Leerzeichen nach Kommas (gleiches Problem)
- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 11: Fehlende Leerzeichen um Addition (
i+1)- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 13: Zeile überschreitet empfohlene Länge (>88 Zeichen)
- Regel: Beschränken Sie Zeilen auf 79-88 Zeichen
- Zeile 14: Fehlende Leerzeichen um Zuweisung (
t=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 14: Fehlende Leerzeichen um alle Operatoren im komplexen Ausdruck
- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 16: Fehlende Leerzeichen um Vergleichsoperatoren (
0<=t<=1)- Regel: Umgeben Sie Vergleichsoperatoren mit Leerzeichen
- Zeile 17: Fehlende Leerzeichen um Zuweisung (
x_intersect=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 17: Fehlende Leerzeichen um Operatoren (
x1+t*(x2-x1))- Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
- Zeile 18: Fehlende Leerzeichen nach Komma und um Operatoren
- Regel: Verwenden Sie Leerzeichen nach Kommas und um Operatoren
- Zeile 20: Fehlendes Leerzeichen nach Komma (
None,None)- Regel: Verwenden Sie Leerzeichen nach Kommas
Korrigierte Version
from typing import List, Tuple
import numpy as np
def find_intersection(
x_road,
y_road,
angle_degrees,
camera_x=0,
camera_y=1.5
):
angle_rad = np.radians(angle_degrees)
ray_dx = np.cos(angle_rad)
ray_dy = np.sin(angle_rad)
for i in range(len(x_road) - 1):
x1, y1 = x_road[i], y_road[i]
x2, y2 = x_road[i + 1], y_road[i + 1]
# Überprüfe Schnittpunkt - diese Berechnung ist komplex und
# könnte für bessere Wartbarkeit refaktoriert werden
numerator = (camera_y - y1) * ray_dx - (camera_x - x1) * ray_dy
denominator = (x2 - x1) * ray_dy - (y2 - y1) * ray_dx
t = numerator / denominator
if 0 <= t <= 1:
x_intersect = x1 + t * (x2 - x1)
return x_intersect, y1 + t * (y2 - y1)
return None, None
Wichtige Erkenntnisse
- Komplexe Ausdrücke: Zerlegen Sie sie in benannte Zwischenvariablen
- Lange Parameterlisten: Verwenden Sie mehrzeilige Formatierung für Klarheit
- Mathematischer Code: Konsistente Abstände machen Formeln lesbar
- Vergleichsketten:
0 <= t <= 1benötigt Leerzeichen um beide Operatoren - Refactoring-Bonus: Das Aufteilen komplexer Berechnungen in Schritte hilft beim Debuggen
- Zeilenlänge: Wenn Formeln zu lang sind, führen Sie Zwischenvariablen ein
Übung 2.6: Konfigurationsverwaltung
Problem
import json,sys
from pathlib import Path
class ConfigManager:
def __init__(self,config_file="config.json"):
self.config_file=config_file
self.data=self.load_config()
def load_config(self):
if Path(self.config_file).exists():return json.load(open(self.config_file))
return {}
def get_value(self,key,default=None):
return self.data.get(key,default)
def update_config(self,updates):
self.data.update(updates)
with open(self.config_file,"w") as f:json.dump(self.data,f)
DEFAULT_timeout=30
max_retries=3
Fragen
- Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 15+ Probleme)
- Geben Sie für jedes Problem die verletzte Regel an
- Schreiben Sie die vollständig korrigierte Version
💡 Lösung anzeigen
Gefundene Probleme
- Zeile 1: Mehrere Imports in einer Zeile (
json,sys)- Regel: Imports sollten in separaten Zeilen stehen
- Zeile 1: Ungenutzter Import (
sys)- Regel: Entfernen Sie ungenutzte Imports
- Zeile 5: Fehlendes Leerzeichen nach Komma in Parametern
- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 6: Fehlende Leerzeichen um Zuweisung (
self.config_file=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 7: Fehlende Leerzeichen um Zuweisung (
self.data=)- Regel: Umgeben Sie Operatoren mit Leerzeichen
- Zeile 10: Zusammengesetzte Anweisung nach if (
:return)- Regel: Vermeiden Sie mehrere Anweisungen in einer Zeile
- Zeile 10: Datei geöffnet, aber nie explizit geschlossen
- Regel: Verwenden Sie Context Manager (
with-Anweisung) für Dateien
- Regel: Verwenden Sie Context Manager (
- Zeile 13: Fehlende Leerzeichen nach Kommas in Parametern (
key,default)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 14: Fehlendes Leerzeichen nach Komma im Methodenaufruf (
key,default)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 17: Fehlendes Leerzeichen nach Komma in Parametern
- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 19: Zusammengesetzte Anweisung nach with (
:json.dump)- Regel: Vermeiden Sie mehrere Anweisungen in einer Zeile
- Zeile 19: Fehlendes Leerzeichen nach Komma in json.dump (
data,f)- Regel: Verwenden Sie Leerzeichen nach Kommas
- Zeile 21: Inkonsistente Konstantenbenennung (
DEFAULT_timeoutsollte komplett groß geschrieben sein)- Regel: Konstanten sollten konsistent UPPER_CASE verwenden
- Zeile 22: Variable sollte UPPER_CASE verwenden (
max_retries→MAX_RETRIES)- Regel: Konstanten auf Modulebene sollten UPPER_CASE verwenden
Korrigierte Version
import json
from pathlib import Path
class ConfigManager:
def __init__(self, config_file="config.json"):
self.config_file = config_file
self.data = self.load_config()
def load_config(self):
if Path(self.config_file).exists():
with open(self.config_file) as f:
return json.load(f)
return {}
def get_value(self, key, default=None):
return self.data.get(key, default)
def update_config(self, updates):
self.data.update(updates)
with open(self.config_file, "w") as f:
json.dump(self.data, f)
DEFAULT_TIMEOUT = 30
MAX_RETRIES = 3
Wichtige Erkenntnisse
- Dateibehandlung: Verwenden Sie immer
with-Anweisungen, um ordnungsgemäße Bereinigung sicherzustellen - Zusammengesetzte Anweisungen: Sie sparen Zeilen, schaden aber der Lesbarkeit und dem Debuggen
- Konsistente Benennung: Alle Konstanten auf Modulebene sollten UPPER_CASE sein
- Methodenverkettung: Jede Operation sollte klar sichtbar in ihrer eigenen Zeile sein
- Ressourcenverwaltung: Pythons Context Manager verhindern Ressourcenlecks
Zusammenfassung und nächste Schritte
Was Sie gelernt haben
Nach Abschluss dieser Level 2 Übungen sollten Sie in der Lage sein:
✅ Mehrere Verstöße gleichzeitig in echtem Code zu erkennen
✅ Muster verwandter Probleme zu erkennen (z.B. alle fehlenden Kommas)
✅ Probleme nach Auswirkung auf die Lesbarkeit zu priorisieren
✅ Systematische Review-Techniken anzuwenden
✅ Saubereren Code von Anfang an zu schreiben
Lernpfad
Level 1 (Einzelne Probleme)
↓
Level 2 (Mehrfache Probleme) ← Sie sind hier
↓
Level 3 (Echter Code)
↓
Automatisierte Tools (Ruff, Black)
↓
Produktions-Workflow (CI/CD)
Empfohlene Übungspraxis
- Tägliche Übung: Bearbeiten Sie 1-2 Übungen pro Tag
- Echter Code: Wenden Sie diese Fähigkeiten auf Ihre eigenen Projekte an
- Peer Review: Tauschen Sie Code mit Kommilitonen aus
- Vor den Tools: Beherrschen Sie manuelle Überprüfung, bevor Sie sich auf Automatisierung verlassen
- Geschwindigkeit aufbauen: Stoppen Sie die Zeit—streben Sie 5 Minuten pro Übung an
Lerntipps
Für maximales Lernen
- Schreiben Sie Ihre Antworten auf
- Denken Sie es nicht nur—schreiben Sie es
- Verstärkt Lernen durch motorisches Gedächtnis
- Erstellt eine Lernreferenz
- Überprüfen Sie vor dem Prüfen der Lösungen
- Widerstehen Sie dem Drang, sofort nachzuschauen
- Kämpfen ist Teil des Lernens
- Vergleichen Sie Ihre Gründlichkeit mit der Antwort
- Verfolgen Sie Ihren Fortschritt
- Notieren Sie, welche Probleme Sie konsequent übersehen
- Konzentrieren Sie Übung auf schwache Bereiche
- Feiern Sie Verbesserungen!
- Üben Sie in Gruppen
- Diskutieren Sie Erkenntnisse mit Kommilitonen
- Lernen Sie von verschiedenen Perspektiven
- Lehren Sie andere, um Ihr Verständnis zu festigen
- Auf echte Projekte anwenden
- Überprüfen Sie Ihren eigenen vergangenen Code
- Beheben Sie Verstöße, die Sie finden
- Bemerken Sie, wie sich die Lesbarkeit verbessert
Viel Erfolg beim Üben! 🚀