![]() |
AW: Guter Code
was bin ich froh, das es solches "with" in C++ nicht gibt:)
Löse das früher wie heute als simple zusätzliche typisierte Pointervariablen. Das funktioniert in Delphi wie in C/C++ :) Positiver Nebeneffekt: man kann solche Pointervariablen vorab auch selbst auf NIL/NULL prüfen, denn das gibt per "with" stets häßliche Exeptions;) Ganz ehrlich: ganz ohne Wissen nur mit aktuell eh stets verfügbarer Quelltextvervollständigung über "Q." oder "Q->" tippt man doch sogar weniger wie "SQL". |
AW: Guter Code
Gibt es in C nicht die Variante vom With, wo man auch einen lokalen Alias (Variable) mit angeben kann?
|
AW: Guter Code
..."wo man auch einen lokalen Alias (Variable)"...
yo, innerhalb eines { Blocks:) also z.B. ala "with xarray[a]" { Xtype *xt=&xarray[a]; //dann weiter mit xt->... } das mach ja schon jeder bessere "C/C++ <-> Delphi" Konverter :) |
AW: Guter Code
Ich würde bei Pascal jetzt nicht unbedingt solche Variablendeklarationen mitten im Code einführen,
aber ein
Delphi-Quellcode:
wäre auch was Nettes und würde nicht der Syntax des Pascal wiedersprechen, bzw. nicht mit der aktuellen Syntax kollidieren.
with x := xyz do
Delphi-Quellcode:
X wäre eine temporäre "lokale" Variable, mit dem Typen (CompileTime), welcher dort zu zugewiesen wird, innerhalb dieses Blocks.
var
xyz: TComponent; begin ... with x := xyz do begin ShowMessage(x.Name); end; end; Hier würde mann quasi den Namespace "x" definieren und würde nicht den Namespace der Methode kompromitieren ("xyz" als neuen "automatischen" Namespace). Automatische Variablen legt Delphi ja auch so öfters schon an. * Für Rückgaben von Funktionen, welche aber nicht angenommen werden, wie z.B.
Delphi-Quellcode:
ohne links eine Variable.
trim(s)
* Und für Zwischenergebnisse von Berechnungen, sowie bei verschachtelten Methoden/Propery
Delphi-Quellcode:
, also das Result von abc.
x.abc.def
* ... |
AW: Guter Code
Eigentlich könnte man das Problem mit dem
Delphi-Quellcode:
ja recht einfach lösen, indem man vor jedem Bezeichner, das zum
with
Delphi-Quellcode:
gehört, einen Punkt setzen muss.
with
Delphi-Quellcode:
Das hat mich schon immer leicht gestört, dass das nicht so gelöst wurde. Denn so wäre es immer eindeutig.
with xyz do begin
ShowMessage(.Name); end; |
AW: Guter Code
Delphi-Quellcode:
Dann noch irgendwas ala "local" für die Variablen und Parameter der aktuellen Methode/Funktion/Prozedur, so wie das Self für die aktuelle Klasse
with abc do begin
with xyz do begin ShowMessage(.Name); end; end; und ein "unit" für die eigene Unit, egal wie sie heißt, so wie das "Result" als Rückgabewert, anstatt dem Funktionsnamen. "unit" ist schon ein reserviertes Wort, ohne Bedeutung innerhalb einer Funktion/Prozedur/Methode ... wäre also noch frei. Denn das ist noch ein enormer Nachteil von WITH, so wie es jetzt ist, denn man kann einfach nicht auf lokale Variablen/Parameter zugreifen, welche so heißen, wie etwas im WITH. Ein
Delphi-Quellcode:
oder
Break(2)
Delphi-Quellcode:
um zwei Schleifen zu verlassen,
Break.Break;
oder besser
Delphi-Quellcode:
, was aber nicht mit While und Repeat funktioniert.
Break(Schleifenvariablenname);
|
AW: Guter Code
Egal wie man daran ändert, gut wird with dadurch trotzdem nicht. Wenn man lokale Variablen in dem with deklarieren muss statt diese vor dem begin zu deklarieren, hat man einfach zu lange Methoden. Und wenn man sich an der Tipparbeit ohne with ernsthaft stört den falschen Beruf...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 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