AGB  ·  Datenschutz  ·  Impressum  







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

Guter Code

Offene Frage von "jaenicke"
Ein Thema von PascalDeveloper · begonnen am 14. Feb 2018 · letzter Beitrag vom 2. Mär 2018
Antwort Antwort
Seite 5 von 5   « Erste     345   
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#41

AW: Guter Code

  Alt 2. Mär 2018, 19:59
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".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#42

AW: Guter Code

  Alt 2. Mär 2018, 20:17
Gibt es in C nicht die Variante vom With, wo man auch einen lokalen Alias (Variable) mit angeben kann?
$2B or not $2B
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#43

AW: Guter Code

  Alt 2. Mär 2018, 21:22
..."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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#44

AW: Guter Code

  Alt 2. Mär 2018, 21:44
Ich würde bei Pascal jetzt nicht unbedingt solche Variablendeklarationen mitten im Code einführen,
aber ein 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. trim(s) ohne links eine Variable.
* Und für Zwischenergebnisse von Berechnungen, sowie bei verschachtelten Methoden/Propery x.abc.def , also das Result von abc.
* ...
$2B or not $2B

Geändert von himitsu ( 2. Mär 2018 um 21:50 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#45

AW: Guter Code

  Alt 2. Mär 2018, 22:07
Eigentlich könnte man das Problem mit dem with ja recht einfach lösen, indem man vor jedem Bezeichner, das zum 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#46

AW: Guter Code

  Alt 2. Mär 2018, 22:11
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 Break(2) oder Break.Break; um zwei Schleifen zu verlassen,
oder besser Break(Schleifenvariablenname); , was aber nicht mit While und Repeat funktioniert.
$2B or not $2B

Geändert von himitsu ( 2. Mär 2018 um 22:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Guter Code

  Alt 2. Mär 2018, 22:25
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...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   

 

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 01:46 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