Anderer Leute Code

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. :-)

Page created
Comments? Use or send an e-mail.