AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das with-Statement in XE4

Ein Thema von Codehunter · begonnen am 22. Apr 2013 · letzter Beitrag vom 8. Sep 2013
Antwort Antwort
Seite 1 von 9  1 23     Letzte »    
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Das with-Statement in XE4

  Alt 22. Apr 2013, 09:04
Ich zitiere jetzt mal aus dem inzwischen geschlossenen Thread:
Ausserdem ist das with-Statement auch nicht mehr gerne gesehen.
Wie bitte? Was soll denn dann verwendet werden? Alles wieder lang ausschreiben? Na schönen Schrank auch! Wenn ich mir z.B. die TMS-Komponenten anschaue... Gigantische TPersistent-Kaskaden. Soll so die Zukunft aussehen:
Delphi-Quellcode:
FormComponent.Property1.SubProperty2.SubProperty3.BoolValue:= xyz;
FormComponent.Property1.SubProperty2.SubProperty3.IntValue:= 123;
FormComponent.Property1.SubProperty2.SubProperty3.StringValue:= 'xyz';
Statt so:
Delphi-Quellcode:
with FormComponent.Property1.SubProperty2.SubProperty3 do
begin
  BoolValue:= xyz;
  IntValue:= 123;
  StringValue:= 'xyz';
end;
Oder
Delphi-Quellcode:
var
  fFForm: TForm;
begin
  fForm:= TForm.Create;
  try
    fForm.AnyThing:= Foo;
    fForm.OtherThing:= Bar;
  finally
   fForm.Free;
  end;
end;
Statt
Delphi-Quellcode:
with TForm.Create do try
  AnyThing:= Foo;
  OtherThing:= Bar;
finally
  Free;
end;
WTF?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:07
Ich sag mal: mit einer Variablen, wie in deinem zweiten Beispiel. Das erste finde ich, gelinde gesagt, sch*****.
Und wirklich überraschend kommt der Move ja auch nicht.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:11
Nein, das erwartet keiner.
Das Problem mit with ist, dass es Scopes verschleiert.

Was ist, wenn Du in einem With-Block, den Wert von Tag des aktuellen Forms auf Sub-Controls schreiben willst? Bam-Scope-Konflikt.

Delphi-Quellcode:
with FormComponent.Property1.SubProperty2.SubProperty3 do
begin
  BoolValue:= self.BoolValue;
  IntValue:= self.IntValue;
  StringValue:= self.StringValue;
end;

// wird dann zu
var myObject: TypeOfSubProperty3;

//...

myObject := FormComponent.Property1.SubProperty2.SubProperty3;
myObject.BoolValue:= BoolValue;
myObject.IntValue:= IntValue;
myObject.StringValue:= StringValue;
Letzlich sparst Du Dir damit sogar noch eine Zeile
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:12
Eben. Eine kleine Variable erspart die Tipparbeit, und übersichtlicher als with ist es auch noch.
Delphi-Quellcode:
var
  MyRecord: TSomeRecord;
begin
  MyRecord := SomeClass.SomeListClass[0].SomeSubClass.RecordProp;
  MyRecord.SomeInt := 42;
  MyRecord.SomeString := 'Wuppdi';
[edit] 2 L8 [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:21
Eben. Eine kleine Variable erspart die Tipparbeit, und übersichtlicher als with ist es auch noch.



Und der Scope-Konflikt hat uns schon einige Tage Fehlersuche gekostet
Mittlerweile bauen wir es überall aus wenn wir eh was an der entsprechenden stelle ändern müssen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:23
Und einen Ausdruck anzeigen im Debugger wird dann auch zur Freude...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:42
Und der Scope-Konflikt hat uns schon einige Tage Fehlersuche gekostet
Vor allen Dingen, wenn das durch Einführungen eines properties Width in TRect mal eben so mit einem Delphi-Update rein rutscht und Code, der vorher problemlos lief, plötzlich nur noch Müll produziert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:44
Vor allen Dingen, wenn das durch Einführungen eines properties Width in TRect mal eben so mit einem Delphi-Update rein rutscht und Code, der vorher problemlos lief, plötzlich nur noch Müll produziert.
Genau. Hier liegt der Fehler an der Sprachdefinition. Hätte man es wie bei VB gemacht mit einem Punkt davor wäre alles klar gewesen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:49
Ohne with ist voll daneben...

Besonders beim Zugriff auf XML Dateien über ein Interface...

Aktuelles Beispiel
GrundDaten.Verfahrensdaten.Beteiligung.Beteiligter.Organisation.Registereintragung.Items[0].Inlaendisches_Registergericht.Registergericht_Ort.Content := 'Bonn'

Ohne With kann man das nicht mehr lesen oder mit arbeiten...
Und jedesmal ne Variable vom entsprechenden Untertypen definieren?

Schlechte wahl...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:52
Zudem gibt es immer wieder Probleme, weil Code nicht mehr kompilierbar ist. Ein Beispiel ist die Einführung von zusätzlichen Features in TRect. Dort gibt es ja nun Offset, was aber leider in der VirtualStringTree genau innerhalb eines with benutzt wurde. Und schon war nur deswegen der Code nicht mehr kompilierbar.

Andere Punkte wurden ja schon genannt, wie der dass ein einfaches Debuggen so gut wie unmöglich wird, da man für jede einzelne Auswertung einer Variablen diese komplett in den Auswerten-Dialog schreiben bzw. kopieren muss (zusammen mit dem Anteil in with).

Das Zwei-Augen Prinzip beim Einchecken wird auch zur Farce, weil dabei niemand den Überblick wahren kann, wenn überall with steht. Da bleibt daher immer ein Unsicherheitsfaktor.
Welche Eigenschaften wo existieren, kann niemand immer auswendig wissen, zumal sich dies auch durch neue Features in der RTL ändert.

Davon abgesehen macht with in meinen Augen auch keinen Sinn. Der einzige "Vorteil" ist, dass man vielleicht etwas weniger tippen muss. Aber als Entwickler darf man ja nun wirklich nicht tippfaul sein, viel tippen gehört schließlich dazu...
Der riesige Zeit- und damit Kostenaufwand, der dann aber folgt, weil der Code schlechter zu warten ist, ist damit jedenfalls gar nicht vergleichbar. Ein Musterbeispiel für eine Milchmädchenrechnung.

Mittlerweile bauen wir es überall aus wenn wir eh was an der entsprechenden stelle ändern müssen.
Wir auch...

Ich selbst habe es auch nie wirklich viel benutzt. Gut, am Anfang als ich noch nicht beruflich entwickelt habe, da habe ich über die Folgen nicht so sehr nachgedacht und es kam schon mal in meinen Quelltexten vor, aber nur selten.

Und jedesmal ne Variable vom entsprechenden Untertypen definieren?
Das ist allemal besser als with.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 9  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
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