Weil es nicht objektorientiert ist. Drei Records hingeklatscht und paar Klassenmethoden implementiert, fertig ist der Nudelsalat. Gerade beim Dateisystemzugriff wäre es schön wenn es "richtig" (Interfaced) gemacht worden wäre, sodass man das beim Testen wegmocken kann und nicht die komplette
Unit überschreiben muss.
Muss es objektorientiert sein? Was ist an den Klassenmethoden falsch? Es macht genau das, was es soll. Ein paar Funktionen zusammenfassen, sodaß es "schön" aussieht.
Warum ist "Interfaced" = "richtig"? Warum sollte ich erst etwas instanzieren müssen, wenn es auch so geht.
Aber ich lerne gerne. Gib mal ein Beispiel, wie ein einfaches
TFile.exists(aFilePath)
bei dir aussieht.
Dann haben wir wohl verschiedene Auffassungen von "schön" aussehen
In diesem Fall würde ich sagen: Ja das muss objektorientiert sein. Ich hab nichts gegen prozedurale Programmierung, die macht aber eben nur an wenigen Stellen Sinn.
Der Zugriff auf ein Dateisystem ist eigentlich dafür prädestiniert mit Abstraktionen/Schnittstellen zu arbeiten. So hat man dann nicht innerhalb seiner TFile.Exists(path) Methode seine 300 Zeilen Code (übertrieben) mit 40 IFDEFs (auch übetrieben
), sondern eine einheitliche, vollständige und korrekt benannte
API für den Entwickler und dahinter die verschiedenen Implementierungen für OSX, Android, Windows, eben abhängig von der Plattform.
Außerdem hast Du mit so statischen vorgehensweisen wie "TFile.Do*(Pfad)" auch immer das Problem, dass Du durch dein Programm hinweg einen String mit Dir rumschleppst, den Du (wenn Du nicht gerade alleine arbeitest) zur Sicherheit vor jeder Verarbeitung überprüfst/auseinander nimmst -> ExtractFileExt, ExtractFilePath, ExtractFileName etc pp. Einfacher wäre auch hier eine IFile Schnittstelle die eine Datei repräsentiert und auf der ich ein IFile.Exists, IFile.FileExt, IFile.Location etc aufrufen kann - nie wieder unnötige String/Pfad Verarbeitungen.
Und wenn ich 1000-5000€ für die
IDE/Sprache bezahle, dann erwarte ich auch dass ich für mein Geld was geboten bekomme - das ist zumindest meine Meinung