Home

02 Übung: PEP 8 - Level 2: Mehrfache Probleme

exercises chapter-02 pep8 code-quality python practice

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:

Anleitung:

  1. Lesen Sie jedes Code-Beispiel sorgfältig
  2. Versuchen Sie, ALLE PEP 8-Verstöße zu finden, bevor Sie die Lösung ansehen
  3. Schreiben Sie Ihre Antworten auf (empfohlen für besseres Lernen)
  4. Klicken Sie erst auf “Lösung anzeigen”, nachdem Sie die Übung versucht haben
  5. 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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 5-7 Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. Schreiben Sie die vollständig korrigierte Version

Ihre Aufgabe

Bevor Sie die Lösung prüfen, versuchen Sie:

💡 Lösung anzeigen

Gefundene Probleme

  1. Zeile 1: Mehrere Imports in einer Zeile (sys,os)
    • Regel: Imports sollten normalerweise in separaten Zeilen stehen
  2. Zeile 1: Ungenutzte Imports (sys und os werden nie verwendet)
    • Regel: Entfernen Sie ungenutzte Imports, um den Code sauber zu halten
  3. Zeile 4: Funktionsname verwendet PascalCase statt snake_case (ProcessData)
    • Regel: Funktionsnamen sollten klein geschrieben sein mit Wörtern getrennt durch Unterstriche
  4. Zeile 4: Fehlendes Leerzeichen nach Komma in Parametern (input_list,threshold)
    • Regel: Verwenden Sie Leerzeichen nach Kommas in Parameterlisten
  5. Zeile 5: Fehlende Leerzeichen um Zuweisungsoperator (result=[])
    • Regel: Umgeben Sie Operatoren immer mit einem einzelnen Leerzeichen auf jeder Seite
  6. Zeile 7: Fehlende Leerzeichen um Vergleichsoperator (item>threshold)
    • Regel: Umgeben Sie binäre Operatoren immer mit Leerzeichen
  7. 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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 10-12 Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. Schreiben Sie die vollständig korrigierte Version

Hinweise

💡 Lösung anzeigen

Gefundene Probleme

  1. Zeile 1: Mehrere Imports in einer Zeile (Dash,html,dcc)
    • Regel: Imports sollten in separaten Zeilen stehen
  2. Zeile 1: Fehlende Leerzeichen nach Kommas im Import
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  3. Zeile 3: Ungenutzter Import (sys)
    • Regel: Entfernen Sie ungenutzte Imports
  4. Zeile 5: Fehlendes Leerzeichen nach Komma in Parametern (num_points=100,x_max=80)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  5. Zeile 6: Fehlende Leerzeichen um Zuweisung (x=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  6. Zeile 6: Fehlende Leerzeichen nach Kommas (0,x_max,num_points)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  7. Zeile 7: Fehlende Leerzeichen um Zuweisung (y=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  8. Zeile 7: Fehlende Leerzeichen um Multiplikationsoperatoren (0.015*x, 0.3*np.sin)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  9. Zeile 7: Fehlende Leerzeichen um Additionsoperator (x**3+0.3)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  10. Zeile 8: Fehlendes Leerzeichen nach Komma in return (x,y)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  11. Zeile 10: Fehlende Leerzeichen nach Doppelpunkten im Dict ('x':0, 'y':2.0, 'z':1.5)
    • Regel: Verwenden Sie Leerzeichen nach Doppelpunkten in Dictionaries
  12. Zeile 11: Inkonsistente Konstantenbenennung (MAX_distance sollte 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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 10-12 Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. Schreiben Sie die vollständig korrigierte Version

Herausforderung

Diese Übung testet Ihre Fähigkeit zu erkennen:

💡 Lösung anzeigen

Gefundene Probleme

  1. Zeile 4: Funktionsname verwendet PascalCase (HelperFunction)
    • Regel: Funktionsnamen sollten snake_case verwenden
  2. Zeile 5: Fehlende Leerzeichen um Zuweisungsoperator (result=val*2)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  3. Zeile 5: Fehlende Leerzeichen um Multiplikationsoperator (val*2)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  4. Zeile 8: Fehlende Leerzeichen nach Kommas (x,y,z)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  5. Zeile 8: Mehrere Anweisungen in einer Zeile nach Doppelpunkt
    • Regel: Vermeiden Sie zusammengesetzte Anweisungen
  6. Zeile 10: Fehlende Leerzeichen nach Kommas (point1,point2)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  7. Zeile 11: Fehlende Leerzeichen um Zuweisung (dx=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  8. Zeile 11: Fehlende Leerzeichen um Subtraktionsoperatoren
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  9. Zeile 12: Fehlende Leerzeichen um Zuweisung (dy=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  10. Zeile 12: Fehlende Leerzeichen um Subtraktionsoperatoren
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  11. Zeile 13: Fehlende Leerzeichen um Additionsoperator (dx**2+dy**2)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  12. 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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 12-15 Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. 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

  1. Zeile 1: Mehrere Imports in einer Zeile (sys,os,json)
    • Regel: Imports sollten in separaten Zeilen stehen
  2. Zeile 1: Alle drei Imports sind ungenutzt
    • Regel: Entfernen Sie ungenutzte Imports
  3. Zeile 4: Fehlende Leerzeichen nach Kommas (data,config)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  4. Zeile 5: Fehlende Leerzeichen um Zuweisung (self.data=data)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  5. Zeile 6: Fehlende Leerzeichen um Zuweisung (self.config=config)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  6. Zeile 8: Methodenname verwendet PascalCase statt snake_case (Process)
    • Regel: Methodennamen sollten snake_case verwenden
  7. Zeile 8: Fehlendes Leerzeichen nach Komma (Process(self,threshold)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  8. Zeile 9: Fehlende Leerzeichen um Zuweisung (filtered=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  9. Zeile 9: Fehlende Leerzeichen um Vergleich (x>threshold)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  10. Zeile 12: Methodenname verwendet PascalCase (GetStats)
    • Regel: Methodennamen sollten snake_case verwenden
  11. Zeile 13: Fehlende Leerzeichen nach Doppelpunkten im Dict ('mean':, 'std':)
    • Regel: Verwenden Sie Leerzeichen nach Doppelpunkten in Dictionaries
  12. Zeile 15: Variable sollte UPPER_CASE verwenden (max_itemsMAX_ITEMS)
    • Regel: Konstanten auf Modulebene sollten UPPER_CASE verwenden
  13. BONUS: np wird verwendet, aber nie importiert (würde NameError verursachen)
    • Problem: Fehlendes import numpy as np

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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 15+ Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. Schreiben Sie die vollständig korrigierte Version

Experten-Level

Dies ist die komplexeste Übung. Sie enthält Verstöße in:

Nehmen Sie sich Zeit und gehen Sie systematisch vor!

💡 Lösung anzeigen

Gefundene Probleme

  1. Zeile 1: Mehrere Imports in einer Zeile (List,Tuple)
    • Regel: Imports sollten in separaten Zeilen stehen (gilt auch für from-Imports)
  2. Zeile 4: Fehlende Leerzeichen nach Kommas in allen Parametern
    • Regel: Verwenden Sie Leerzeichen nach Kommas (betrifft 4 Kommas)
  3. Zeile 5: Fehlende Leerzeichen um Zuweisung (angle_rad=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  4. Zeile 6: Fehlende Leerzeichen um Zuweisung (ray_dx=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  5. Zeile 7: Fehlende Leerzeichen um Zuweisung (ray_dy=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  6. Zeile 9: Fehlende Leerzeichen um Subtraktion (len(x_road)-1)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  7. Zeile 10: Fehlende Leerzeichen nach Kommas (x1,y1 und x_road[i],y_road[i])
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  8. Zeile 11: Fehlende Leerzeichen nach Kommas (gleiches Problem)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  9. Zeile 11: Fehlende Leerzeichen um Addition (i+1)
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  10. Zeile 13: Zeile überschreitet empfohlene Länge (>88 Zeichen)
    • Regel: Beschränken Sie Zeilen auf 79-88 Zeichen
  11. Zeile 14: Fehlende Leerzeichen um Zuweisung (t=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  12. Zeile 14: Fehlende Leerzeichen um alle Operatoren im komplexen Ausdruck
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  13. Zeile 16: Fehlende Leerzeichen um Vergleichsoperatoren (0<=t<=1)
    • Regel: Umgeben Sie Vergleichsoperatoren mit Leerzeichen
  14. Zeile 17: Fehlende Leerzeichen um Zuweisung (x_intersect=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  15. Zeile 17: Fehlende Leerzeichen um Operatoren (x1+t*(x2-x1))
    • Regel: Umgeben Sie binäre Operatoren mit Leerzeichen
  16. Zeile 18: Fehlende Leerzeichen nach Komma und um Operatoren
    • Regel: Verwenden Sie Leerzeichen nach Kommas und um Operatoren
  17. 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 <= 1 benö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

  1. Listen Sie ALLE PEP 8-Verstöße auf (Ziel: 15+ Probleme)
  2. Geben Sie für jedes Problem die verletzte Regel an
  3. Schreiben Sie die vollständig korrigierte Version
💡 Lösung anzeigen

Gefundene Probleme

  1. Zeile 1: Mehrere Imports in einer Zeile (json,sys)
    • Regel: Imports sollten in separaten Zeilen stehen
  2. Zeile 1: Ungenutzter Import (sys)
    • Regel: Entfernen Sie ungenutzte Imports
  3. Zeile 5: Fehlendes Leerzeichen nach Komma in Parametern
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  4. Zeile 6: Fehlende Leerzeichen um Zuweisung (self.config_file=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  5. Zeile 7: Fehlende Leerzeichen um Zuweisung (self.data=)
    • Regel: Umgeben Sie Operatoren mit Leerzeichen
  6. Zeile 10: Zusammengesetzte Anweisung nach if (:return)
    • Regel: Vermeiden Sie mehrere Anweisungen in einer Zeile
  7. Zeile 10: Datei geöffnet, aber nie explizit geschlossen
    • Regel: Verwenden Sie Context Manager (with-Anweisung) für Dateien
  8. Zeile 13: Fehlende Leerzeichen nach Kommas in Parametern (key,default)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  9. Zeile 14: Fehlendes Leerzeichen nach Komma im Methodenaufruf (key,default)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  10. Zeile 17: Fehlendes Leerzeichen nach Komma in Parametern
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  11. Zeile 19: Zusammengesetzte Anweisung nach with (:json.dump)
    • Regel: Vermeiden Sie mehrere Anweisungen in einer Zeile
  12. Zeile 19: Fehlendes Leerzeichen nach Komma in json.dump (data,f)
    • Regel: Verwenden Sie Leerzeichen nach Kommas
  13. Zeile 21: Inkonsistente Konstantenbenennung (DEFAULT_timeout sollte komplett groß geschrieben sein)
    • Regel: Konstanten sollten konsistent UPPER_CASE verwenden
  14. Zeile 22: Variable sollte UPPER_CASE verwenden (max_retriesMAX_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

  1. Tägliche Übung: Bearbeiten Sie 1-2 Übungen pro Tag
  2. Echter Code: Wenden Sie diese Fähigkeiten auf Ihre eigenen Projekte an
  3. Peer Review: Tauschen Sie Code mit Kommilitonen aus
  4. Vor den Tools: Beherrschen Sie manuelle Überprüfung, bevor Sie sich auf Automatisierung verlassen
  5. Geschwindigkeit aufbauen: Stoppen Sie die Zeit—streben Sie 5 Minuten pro Übung an

Lerntipps

Für maximales Lernen

  1. Schreiben Sie Ihre Antworten auf
    • Denken Sie es nicht nur—schreiben Sie es
    • Verstärkt Lernen durch motorisches Gedächtnis
    • Erstellt eine Lernreferenz
  2. Ü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
  3. Verfolgen Sie Ihren Fortschritt
    • Notieren Sie, welche Probleme Sie konsequent übersehen
    • Konzentrieren Sie Übung auf schwache Bereiche
    • Feiern Sie Verbesserungen!
  4. Üben Sie in Gruppen
    • Diskutieren Sie Erkenntnisse mit Kommilitonen
    • Lernen Sie von verschiedenen Perspektiven
    • Lehren Sie andere, um Ihr Verständnis zu festigen
  5. 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! 🚀

© 2026 Dominik Mueller   •  Powered by Soopr   •  Theme  Moonwalk