Nächstes Mal, wenn ich plane, anderer Leute Code zu übernehmen, gucke ich ihn mir vorher genauer an. Ich wollte ja ursprünglich viel von burn klauen. Jetzt denke ich: Ideen ja, Code nein.
Ich sehe mich eigentlich nicht in der Position, großartig anderer Leute
Code abzuurteilen, aber was ich hier vor mir sehe ist schon grausig. Was
mit recht schnell auffiel: burn ist ca. 1200 Zeilen lang. die
main()
-Methode nimmt davon fast die Hälfte ein. Darunter so Perlen wie
das for-case
Paradigma:
for key, val in vc.items():
if key == 'TITLE':
self.title = val
elif key == 'ARTIST':
self.artist = val
elif key == 'ALBUM':
self.album = val
elif key == 'DATE':
self.year = val
elif key == 'GENRE':
self.genre = val
elif key == 'VENDOR':
self.vendor = val
elif key == 'TRACKNUMBER':
self.track = val
elif key == 'COMMENT':
self.comment = val
elif key == 'TRANSCODED':
self.transcoded = val
Man hätte natürlich einfach das Dictionary kopieren können, aber was solls.
main()
ist übrigens ein riesiges if-Konstrukt:
if mode == 1: #DATA-CD
if mode == 2: #ISO CD
...
Mit einer Schachtelungstiefe von mindestens acht. Das Dekodieren von
Ogg- und MP3-Dateien findet natürlich auch in main()
statt. Genau da
hab ich zuerst gesucht!
Objektorientierung ist ja auch ein recht schwieriges Thema. Es gibt eine
Klasse FileInfo
und eine Klasse OggInfo
, die erstaunlicherweise
nicht von FileInfo
ableitet. Überhaupt ist mir nicht klar, nach
welchen Gesichtspunkten Klassen gebaut wurden. So Konzepte wie Kapselung
oder Polymorphie scheinen dem Autor unbekannt zu sein.
Oh, und der Klassiker Variablenbenennung: x
, y
und list
finde
ich echt kacke. Und zwanzig Zeilen, die mit print
beginnen, sind
einfach nur überflüssig. Dafür gibts Multilinestrings.
Ach ja: wer sowas in meinem Code findet, darf mir das natürlich ähnlich deutlich sagen.