**Dies ist eine alte Version des Dokuments!**
Objekt-orientierte Programmierung
Code mit vielen Eigenschaften kann schnell unübersichtlich werden - sogar selbst geschriebener Code altert schlecht und ist nach wenigen Wochen unlesbar. Was macht der folgende Code?
- spaghetti.py
v = [ [["Baum", "tree"], 0, 0], [["Blume", "flower"], 0, 0], [["Fisch", "fish"], 0, 0], ] for _ in range(3): for w in v: w1, w2 = w[0] if w2 == input(f"Translate {w1}: "): w[1]+=1 print("correct") else: w[2]+=1 print("incorrect") for w in v: print(f'{w[1]/(w[1]+w[2]):.0%}: {w[0]}')
Code wird nur einmal geschrieben, aber sehr viel häufiger und von mehr Personen gelesen. Es lohnt sich also, in leserlichen Code zu investieren. Natürlich könnten wir obigen Spaghetti-Code mit besseren Variablennamen, Dictionaries und Kommentaren verbessern:
- nudeln.py
# Define vocabulary unit voci_unit = [ {'translation': {'word1':"Baum", 'word2': "tree"}, 'correct': 0, 'incorrect': 0}, {'translation': {'word1':"Blume", 'word2': "flower"}, 'correct': 0, 'incorrect': 0}, {'translation': {'word1':"Fisch", 'word2': "fish"}, 'correct': 0, 'incorrect': 0}, ] # Make three passes for _ in range(3): for w in voci_unit: if w['translation']['word2'] == input(f"Translate {w['translation']['word1']}: "): w['correct']+=1 print("correct") else: w['incorrect']+=1 print("incorrect") # Print statistics for w in voci_unit: print(f'{w['correct']/(w['correct']+w['incorrect']):.0%}: {w['translation']}')