Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Guter Code (https://www.delphipraxis.net/195247-guter-code.html)

mensch72 2. Mär 2018 18:59

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".

himitsu 2. Mär 2018 19:17

AW: Guter Code
 
Gibt es in C nicht die Variante vom With, wo man auch einen lokalen Alias (Variable) mit angeben kann?

mensch72 2. Mär 2018 20:22

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 :)

himitsu 2. Mär 2018 20:44

AW: Guter Code
 
Ich würde bei Pascal jetzt nicht unbedingt solche Variablendeklarationen mitten im Code einführen,
aber ein
Delphi-Quellcode:
with x := xyz do
wäre auch was Nettes und würde nicht der Syntax des Pascal wiedersprechen, bzw. nicht mit der aktuellen Syntax kollidieren.

Delphi-Quellcode:
var
  xyz: TComponent;
begin
  ...
  with x := xyz do begin
    ShowMessage(x.Name);
  end;
end;
X wäre eine temporäre "lokale" Variable, mit dem Typen (CompileTime), welcher dort zu zugewiesen wird, innerhalb dieses Blocks.
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:
trim(s)
ohne links eine Variable.
* Und für Zwischenergebnisse von Berechnungen, sowie bei verschachtelten Methoden/Propery
Delphi-Quellcode:
x.abc.def
, also das Result von abc.
* ...

Namenloser 2. Mär 2018 21:07

AW: Guter Code
 
Eigentlich könnte man das Problem mit dem
Delphi-Quellcode:
with
ja recht einfach lösen, indem man vor jedem Bezeichner, das zum
Delphi-Quellcode:
with
gehört, einen Punkt setzen muss.
Delphi-Quellcode:
with xyz do begin
  ShowMessage(.Name);
end;
Das hat mich schon immer leicht gestört, dass das nicht so gelöst wurde. Denn so wäre es immer eindeutig.

himitsu 2. Mär 2018 21:11

AW: Guter Code
 
Delphi-Quellcode:
with abc do begin
  with xyz do begin
    ShowMessage(.Name);
  end;
end;
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
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:
Break(2)
oder
Delphi-Quellcode:
Break.Break;
um zwei Schleifen zu verlassen,
oder besser
Delphi-Quellcode:
Break(Schleifenvariablenname);
, was aber nicht mit While und Repeat funktioniert.

jaenicke 2. Mär 2018 21:25

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 04:19 Uhr.
Seite 5 von 5   « Erste     345   

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