Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TFile, TDirectory vs. alte Funktionen (https://www.delphipraxis.net/186202-tfile-tdirectory-vs-alte-funktionen.html)

Dejan Vu 14. Aug 2015 06:20

AW: TFile, TDirectory vs. alte Funktionen
 
'with' ist nicht bä, sondern nur unpraktisch.

Nur um es noch einmal festzuhalten: TFile.Exists hat nichts, aber auch gar nichts mit OOP zu tun. TFile ist eine statische Klasse und das ist nichts anderes als eine Unit.

Der von alda skizzierte Ansatz wäre wirklich sehr angenehm, zumal ich dann auch auf der Ebene ordentliche (bzw. überhaupt) Unittests schreiben kann. Ansonsten ist das Mocken von 'TFile.Exists' auch nicht so einfach.

Perlsau 14. Aug 2015 07:02

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von Dejan Vu (Beitrag 1312104)
'with' ist nicht bä, sondern nur unpraktisch.

Ist doch völlig wurscht, ob man jetzt "bä" oder "böse" oder "besser nicht verwenden" sagt. Fakt ist, daß die Verwendung von with gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte.

bernau 14. Aug 2015 07:57

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von Dejan Vu (Beitrag 1312104)
Nur um es noch einmal festzuhalten: TFile.Exists hat nichts, aber auch gar nichts mit OOP zu tun. TFile ist eine statische Klasse und das ist nichts anderes als eine Unit.

Ich habe nicht geschrieben, daß die jetzige Version OOP ist, sondern daß ich diese Schreibweise als sehr angenehm empfinde.

alda 14. Aug 2015 09:26

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von Dejan Vu (Beitrag 1312104)
Der von alda skizzierte Ansatz wäre wirklich sehr angenehm, zumal ich dann auch auf der Ebene ordentliche (bzw. überhaupt) Unittests schreiben kann. Ansonsten ist das Mocken von 'TFile.Exists' auch nicht so einfach.

Genau, und die einzige Möglichkeit die Du für solche "prozeduralen" Ansätze hast, ist die komplette Unit im Testprojekt zu überschreiben. Das geht dann aber halt auch nur ein einziges Mal innerhalb dieses Testprojektes :P

Frickler 2. Sep 2015 14:26

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von bernau (Beitrag 1312076)
Übrigens: with ist bäh ;-)

So, wie es Delphi aktuell macht, ja. Aber ein "with" wie in
Delphi-Quellcode:
with X = TMySpecialType.Create(12, 'hallo', Self) do
  ShowMessage(X.AsString);
fände ich persönlich ne Super-Idee.


(ist aus Modula-3)

Stevie 2. Sep 2015 15:27

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von Frickler (Beitrag 1314452)
Zitat:

Zitat von bernau (Beitrag 1312076)
Übrigens: with ist bäh ;-)

So, wie es Delphi aktuell macht, ja. Aber ein "with" wie in
Delphi-Quellcode:
with X = TMySpecialType.Create(12, 'hallo', Self) do
  ShowMessage(X.AsString);
fände ich persönlich ne Super-Idee.


(ist aus Modula-3)

Leider passt das nicht so ganz in Delphi wegen einigen Konzepten:

1. In Delphi müssen Variablen vordefiniert werden, es spart mir also nichtmal sonderlich viel Tiparbeit
2. In Delphi gibt es keinen kleineren Scope als eine Routine. Solch ein with sollte aber einen bilden, siehe using.

mkinzler 2. Sep 2015 15:51

AW: TFile, TDirectory vs. alte Funktionen
 
Dann müsste man halt mit compiler magic arbeiten.

Delphi-Quellcode:
with x = aClass.aSubClass.AnotherOne do
  x.Attribut := <IrgendWas>;
->

Delphi-Quellcode:
 aClass.aSubClass.AnotherOne.Attribut := <IrgendWas>;
Oder noch besser den Scope verfeinern.

himitsu 2. Sep 2015 16:49

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

1. In Delphi müssen Variablen vordefiniert werden, es spart mir also nichtmal sonderlich viel Tiparbeit
Jain, denn wenn man es so sieht, dann kann Delphi sowas schon sehr lange, aber leider nicht in einem with.

siehe
Delphi-Quellcode:
try

except
  on E: Exception do
    ShowMessage(E.Message);
end;
entspricht in etwa
Delphi-Quellcode:
var
  E: Exception;

try

except
  if ExceptObject is Exception then begin
    E := Exception(ExceptObject);
    ShowMessage(E.Message);
  end;
end;
und Self ist auch sowas.


PS:
Delphi-Quellcode:
with X = TMySpecialType.Create(12, 'hallo', Self) do
ginge doch?
oder meint ihr
Delphi-Quellcode:
with X := TMySpecialType.Create(12, 'hallo', Self) do
:zwinker:

Und sowas wie "Self" für die temporäre "Variable" des WITH wäre auch schön, wenn man schon das X:= nicht selber angeben darf.

Delphi-Quellcode:
with Memo1, Memo1.Lines, Memo1.irgendwasanderes do
  Text := Value[1] + sonstwas;
:roll::roll::roll:

uligerhardt 2. Sep 2015 17:56

AW: TFile, TDirectory vs. alte Funktionen
 
Zitat:

Zitat von Perlsau (Beitrag 1312107)
Fakt ist, daß die Verwendung von with gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte.

Fakt ist, daß Programmieren gewisse Risiken birgt, die zu schwer auffindbaren Fehlern führen können und deshalb tunlichst vermieden werden sollte. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz