AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Das with-Statement in XE4

Ein Thema von Codehunter · begonnen am 22. Apr 2013 · letzter Beitrag vom 8. Sep 2013
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

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

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:15
Andererseits, wenn ich meinen 7-Jahre-Migrationszyklus in Betracht ziehe und das "with-CutOff" in 3 Jahren kommt, träfe es mich erst in 10 Jahren. Vielleicht habe ich bis dahin meine betreffenden Synapsen neu vernetzt ^^

Oder ich geh in Rente...
Ich stimme Dir zu 100% zu...

"7-Jahre-Migrationszyklus" klingt nach "ich arbeite auch noch mit D2007 wegen Unicode Umstellung"..

Ich möchte wissen wieviel prozent der Entwickler immer noch mit D2007 arbeiten, weil die "alten" Projekte zu groß sind um diese auf Unicode um zu stellen... (Aber das ist ein anderer Thread)

Ich möchte mal behaupten ich hatte NOCH NIE einen Fehler der aus einen With resultierte...

Liegt vielleicht daran, das ich With nicht in der 1. Ebene benutze... Beispiel:


MyClass.Subclass.Coole.Text := 'Bla' Dann schreibe ich

Delphi-Quellcode:
With MyClass.Subclass do
  Cool.Text := 'Bla'
und nicht

Delphi-Quellcode:
With MyClass.Subclass.Cool do
  Text := 'Bla'
So läßt sich das auch nachher immernoch super lesen...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#2

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:26
So läßt sich das auch nachher immernoch super lesen...
Super finde ich nicht, aber lesbarer ist es, das stimmt. Debuggen lässt es sich trotzdem nicht sinnvoll bzw. nur mit unnötigem Zeitaufwand.

Mal ganz davon abgesehen, dass mir das so ziemlich auf den Zünder geht (persönliche Meinung) dürfte das dazu führen dass viele Drittanbieter-Komponenten ziemlich lange brauchen werden bis sie für XE5 (oder wo auch immer with dann rausfliegt) verfügbar sind.
Dass with immer wieder Probleme macht, ist ja nun nichts Neues. Es wird aber (leider) trotzdem nicht aus der Sprache rausfliegen, sondern wird nur in der RTL nicht mehr benutzt. Ob andere da mitziehen, ist eine andere Sache.

Das Debuggen geht deshalb heute mit XE3 auch sehr viel schneller, weil ich nicht ständig Ausdrücke in Strg + F7 auswerten muss, wenn ich in den Delphiquelltexten debugge, sondern einfach die Maus drüberhalten kann. Das hat mich die ganzen Jahre schon genervt...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#3

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:02
Es wird aber (leider) trotzdem nicht aus der Sprache rausfliegen, sondern wird nur in der RTL nicht mehr benutzt. Ob andere da mitziehen, ist eine andere Sache.
Die Diskussion im Netz (die ich ehrlich zugegeben bisher überhaupt nicht wahrgenommen habe) scheint aber das Gegenteil anzudeuten.

Mag sein dass with allgemein nicht sehr beliebt ist. Aber das ist genauso eine persönliche Sicht der Dinge. Wenn es with nie gegeben hätte würde es mir wahrscheinlich gar nicht fehlen. So aber habe ich sogar in anderen Sprachen nach einem with-Äquivalent gesucht und enttäuschenderweise keins gefunden (z.B. PHP). Jetzt dürft ihr frohlocken... Zum Glück! Egal, es soll keine philosophische Diskussion werden.
Zitat von jaenicke:
Das Debuggen geht deshalb heute mit XE3 auch sehr viel schneller, weil ich nicht ständig Ausdrücke in Strg + F7 auswerten muss, wenn ich in den Delphiquelltexten debugge, sondern einfach die Maus drüberhalten kann. Das hat mich die ganzen Jahre schon genervt...
Dafür vergeudet man die so gewonnene Zeit mit den anderen Unzulänglichkeiten der IDE. Ich denke da nur an die reine Startzeit der IDE und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.

Ok, um wieder auf das Thema zurück zu kommen: Angenommen, with ist tatsächlich so unschön wie ihr es beschreibt und ich hatte es bisher bloß nicht als Problem wahrgenommen. Ganz ehrlich: Der Compiler (egal ob das alte D7 oder das neuere XE2) geben Hinweise und Warnungen en masse aus für jeden erdenklichen Firlefanz. Variablen, die deklariert und nicht verwendet werden z.B. Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?

Ich meine, dann braucht sich wirklich niemand wundern, dass so eine Kreuzung aus Gewohnheitstier und Betonschädel wie ich sich dann aufregt ^^

@sx2008: Dein Vorschlag zur Erweiterung der with-Syntax finde ich exzellent! x und y könnten sogar untypisierte Ausdrücke sein, der Compiler wüßte durch das with-Statement auf was sie sich beziehen. Die Lösung wäre viel besser als das ersatzlose Streichen von with.
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 jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#4

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:12
Ich denke da nur an die reine Startzeit der IDE
So viel finde ich die 10 Sekunden nicht. Wie oft starte ich denn Delphi pro Tag? Das ist bei mir in der Regel eine niedrige einstellige Zahl.

und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.
Dafür gibt es ja die DDevExtensions.

Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?
Weil der Compiler die Probleme kaum erkennen geschweige denn genau identifizieren kann. Zudem würde es da bei den meisten Projekten mit with-Verwendung schlicht viel zu viele Meldungen geben und außerdem war with bis vor kurzem ja auch in den RTL-Quelltexten weit verbreitet.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (22. Apr 2013 um 10:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:37
Ich denke da nur an die reine Startzeit der IDE und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.
Ist zwar jetzt OT, aber mein XE3 startet um einiges schneller als D7.

Der Compiler (egal ob das alte D7 oder das neuere XE2) geben Hinweise und Warnungen en masse aus für jeden erdenklichen Firlefanz. Variablen, die deklariert und nicht verwendet werden z.B. Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?
Für den Compiler ist es ja nichts besonderes, innerhalb eines anderen Scopes zu arbeiten. Du bekommst ja auch keine Warnung vom Compiler, wenn eine lokale Variable eine gleichnamige globale verdeckt.

Andererseits hat ein Tool wie der Pascal Analyzer extra einen Report für mehrdeutige Referenzen in with-Anweisungen (obwohl sie für den Compiler ja gar nicht mehrdeutig sind).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#6

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 12:11
Ist zwar jetzt OT, aber mein XE3 startet um einiges schneller als D7.
Ich kann nur von XE2 reden. In der Blanko-Installation bei mir ohne Extensions 40 Sekunden. Mit CnPack usw. dann 55 Sekunden. Alles von HDD zu laden, kein Netzwerk und keine toten URNs dabei. Bis allein der Splashscreen erscheint dauerts bei mir 15 Sekunden. Ein leeres Projekt laden 7 Sekunden. Ein "dickes" Projekt laden dauert noch länger. Woher das kommt kann ich nicht sagen, ist ein Phenom X6 mit Win7-Leistungsindex 4,7 wobei der schlechteste Wert die Graka ist, HDD hat 5,9 und CPU als auch RAM jeweils 7,5.
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 Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.643 Beiträge
 
#7

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 12:37
Ich würde ne SSD beantragen. Die paar Euro investition hast Du durch weniger Wartezeiten in spätestens nem Monat wieder rausgearbeitet.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#8

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 12:51
Ist zwar jetzt OT, aber mein XE3 startet um einiges schneller als D7.
Ich kann nur von XE2 reden. In der Blanko-Installation bei mir ohne Extensions 40 Sekunden.
Das ist genau das Problem, da fehlt das IDEFixPack. Dass Delphi ohne langsam ist, ist klar.

Und eine SSD beschleunigt das ganze natürlich enorm, da hat Phoenix Recht, aber hier ist grad keine drin und es sind 10 Sekunden Startzeit.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#9

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 13:23
Und eine SSD beschleunigt das ganze natürlich enorm....
Die XE2-Startzeit mit nur dem OS und Programmen auf einer SSD, und den Projekten auf einer HDD, bei mir 7 Sekunden.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:41
Ich möchte mal behaupten ich hatte NOCH NIE einen Fehler der aus einen With resultierte...
Ich überhole immer links...
Habe mir nie die Hände gewaschen, bevor ich die Kontaktlinsen wechsel'...
... ist mir noch nie was bei aufgefallen. Also KANN da ja garnix schiefgehen.
Wirklich geile Logik und auch sehr professionell, wirklich.

Es gibt Sachen, die kann man persönlichem Geschmack überlassen, selbst beim Programmieren. Zum Beispiel bescheuerte Naming-Conventions, die Studien schon vor Jahrzehnten als sinnlos bis hinderlich überführt haben.
Sind bescheuert: ja. Lassen sich nur entziffern, aber nicht lesen: ja.
Aber sie schaffen keine wirklich fiesen Scoping Issues, da der Code selbst ja nur bescheuert aussieht, aber nicht per-se falsch ist.

Manche Sachen sind aber objektiv schlechter als mind. eine ihrer Alternativen. Dann ist es falsch belehrungsresistent weiterhin darauf zu bestehen, dass linksüberholen sicher ist.

"With" war mal im alten TP eine Optimierung im Umgang mit Records. d.h. Obwohl es sprachl. Mist war und eigentlich hätte gemieden werden müssen, gab es damals einen Grund das zu nutzen. (Weil es es einen vllt. messbaren Geschwindigkeitsvorteil brachte)
Heute gibt es das nicht. Es ist ein Feature, das schlimmer als Goto ist. Denn Goto kann nicht plötzlich die Beudeutung deines Codes ändern, wenn du eine neue Version einer Library nutzt.
Dein "super lesbares" Beispiel ist auch ganz toll geeignet um "With"s Problem aufzuzeigen:
Die Library, die "Cool" deklariert, bekommt ein Update und "Text" heißt jetzt "Title".
Jetzt änderst du "Text" aus dem nächsthöheren Scope. Super

Zitat:
So läßt sich das auch nachher immernoch super lesen...
Lässt sich mit einer Variablen nicht schlechter lesen, wahrscheinlich sogar besser. Denn diese Variable kann deinen wirklichen use-case besser abbilden als es die Property könnte, welche ja nicht für genau diese Verwendung deklariert wurde.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz