Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   10.4 : Warum Inline-Variablen? (https://www.delphipraxis.net/204421-10-4-warum-inline-variablen.html)

Lemmy 29. Mai 2020 10:16

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von Hobbycoder (Beitrag 1465748)
Das macht meiner Meinung nach einen Code sogar noch lesbarer. In meinen weiß ich zumindest, wenn eine Var Inline deklariert ist, wird sie weiter unten im Code nicht mehr verwendet.

völlig richtig! Denn: Kannst Du in einer längeren Prozedur eine Inline-Variable verwenden, dann liegt der Verdacht doch sehr nahe, dass dieser Codeteil in eine eigene Methode refactored werden kann.

Hobbycoder 29. Mai 2020 10:26

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von Lemmy (Beitrag 1465750)
Zitat:

Zitat von Hobbycoder (Beitrag 1465748)
Das macht meiner Meinung nach einen Code sogar noch lesbarer. In meinen weiß ich zumindest, wenn eine Var Inline deklariert ist, wird sie weiter unten im Code nicht mehr verwendet.

völlig richtig! Denn: Kannst Du in einer längeren Prozedur eine Inline-Variable verwenden, dann liegt der Verdacht doch sehr nahe, dass dieser Codeteil in eine eigene Methode refactored werden kann.

Kann...aber nicht muss.

Einen Nutzen, den ich mir aus der Möglichkeit Inline-Vars zu verwenden ziehe ist wenn ich mir rein zu Debuggingzwecken mal schnell einen Wert in einer Variable zu halten.

Moombas 29. Mai 2020 10:54

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von Hobbycoder (Beitrag 1465748)
Das macht meiner Meinung nach einen Code sogar noch lesbarer. In meinen weiß ich zumindest, wenn eine Var Inline deklariert ist, wird sie weiter unten im Code nicht mehr verwendet.

Warum benutzt du dann nicht einfach eine Konstante?
Dann kann sie weiter unten im Code gar nicht erst verändert werden!
Für mich kein Argument einer Inline-Deklaration

Ich sehe eigentlich nur einen Vorteil, bin aber nicht ganz so bewandert wie viele andere hier.
Man kann eine Variable festlegen und den "Initialwert" gleich mit festlegen und diesen auch sofort erkennen.

Stevie 29. Mai 2020 11:01

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von Moombas (Beitrag 1465762)
Warum benutzt du dann nicht einfach eine Konstante?
Dann kann sie weiter unten im Code gar nicht erst verändert werden!
Für mich kein Argument einer Inline-Deklaration

Es gibt eine kleinen aber feinen Unterschied zwischen einer Konstanten und einer read-only Variable

Schau mal, was mit den inline Variablen feines geht:
Delphi-Quellcode:
begin
  var i := 0;
  Readln(i);
  const s = i.ToString; // read only variable!
//  s := 'test'; // würde nicht kompilieren!
  Writeln(s);
  Readln;
end.

Moombas 29. Mai 2020 11:11

AW: 10.4 : Warum Inline-Variablen?
 
Stimmt, da hast du recht, das es in diesem Fall gut und Sinnig ist.
Da man in so einem Fall natürlich die Konstante gar nicht vorher setzen kann, sondern das nur als Variable ginge.

Da ist mein Gedankengang Variable <> Konstante halt da gewesen und nicht dran gedacht das man hier ja von beidem redet: Inline-Variable (macht aus meiner Sicht selten Sinn) und Inline-Konstante (macht häufiger mal Sinn).

Aber das ist nur meine Meinung.

OlafSt 29. Mai 2020 11:26

AW: 10.4 : Warum Inline-Variablen?
 
Es ist schon erstaunlich, das hunderttausende von C-, C++ -, und C#-Entwicklern seit Jahrzehnten (!) mit diesem Feature zurechtkommen und trotzdem guten Code schreiben können. Ich vermisse dieses Feature in Delphi schmerzlich und bin froh, das es nun Einzug hält.

Heimlich 29. Mai 2020 11:31

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von Moombas (Beitrag 1465762)
Ich sehe eigentlich nur einen Vorteil, bin aber nicht ganz so bewandert wie viele andere hier.
Man kann eine Variable festlegen und den "Initialwert" gleich mit festlegen und diesen auch sofort erkennen.

Na dann schau mal hier:

Delphi-Quellcode:
unit Unit1;

interface
  uses Unit2;
...
...

begin
  var IstEinText := GetIstEinText;
 ...
 ...
end;
Delphi-Quellcode:
unit Unit2;

interface

function GetIstEinText: string;

implementation

function GetIstEinText: string;
begin
  Result := 'Ja, das ist ein Text.';
end;
Wahrscheinlich denkt man erst, es ist ein Boolean, aber Pustekuchen.

Damit wäre Folgendes obsolet:

Zitat:

Zitat von Stevie (Beitrag 1465743)
In einem Großteil der Software spielt es keine Rolle, welchen exakten Typen eine Variable hat, sofern der Variablenname deutlich ist (siehe auch der von mir zuvor verlinkte Vortrag).


...weil Variablennamen nicht vorgeschrieben werden.


Also ist es kein Vorteil, sondern es könnte einen Vorteil sein, aber könnte ist nichts Halbes und nichts Ganzes.

Moombas 29. Mai 2020 11:34

AW: 10.4 : Warum Inline-Variablen?
 
@Heimlich: Das Problem liegt aber in der Art der "Initialisierung" des Wertes.
Für mich ist die Initialisierung niemals mit einer Funktion verbunden aber evtl. bin ich da auch alleine mit.

Heimlich 29. Mai 2020 11:41

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von OlafSt (Beitrag 1465774)
Es ist schon erstaunlich, das hunderttausende von C-, C++ -, und C#-Entwicklern seit Jahrzehnten (!) mit diesem Feature zurechtkommen und trotzdem guten Code schreiben können. Ich vermisse dieses Feature in Delphi schmerzlich und bin froh, das es nun Einzug hält.

Du verwechselt da gerade was. Hunderttausende von C-, C++ -, und C#-Entwicklern schreiben seit Jahrzehnten funktionierenden Code, aber bestimmt keinen guten und schon gar keinen sauberen.
Deshalb hat folgender Satz von Niklaus Wirth immer noch Bestand:
"C++ is an insult to the human brain."
Das kann man auch bei C# sagen.

DieDolly 29. Mai 2020 12:06

AW: 10.4 : Warum Inline-Variablen?
 
Zitat:

Zitat von jaenicke (Beitrag 1465571)
Zitat:

Zitat von himitsu (Beitrag 1465567)
OK, also Ersatz für das WITH ist dieses VAR doch wirklich mal ein schöner Ersatz,
aber bei einer kurzen Funktion würde doch nichts dagegen sprechen die Variable 3 Zeilen höher zu definieren.

Dann aber mit begin..end drum herum...
Delphi-Quellcode:
procedure TForm71.FormCreate(Sender: TObject);
begin
  begin
    var a := 42;
    ShowMessage(IntToStr(a));
  end;
  a := 33; // hier gibt es die Variable nicht mehr --> Fehler
end;
Auf die Weise kann man Interfaces z.B. wieder aus dem Scope laufen lassen.

Es gibt schon durchaus Stellen, an denen es Sinn macht so etwas zu verwenden. Darum sage ich ja auch, dass ich persönlich es nicht möchte. Aber ich verstehe durchaus, wenn das jemand anders sieht. ;-)

Zitat:

Zitat von Harry Stahl (Beitrag 1465570)
Ich habe zufälligerweise gerade etwas dazu in diesem Beitrag geschrieben:

https://www.delphipraxis.net/1465551-post57.html

Type inference ist der Teil daran, der mir weniger gefällt, so praktisch es auch sein mag. Aber der Punkt, dass man genau den Typ angibt, den man meint, der Compiler es prüft usw. war immer eine der wichtigsten Stärken von Pascal / Delphi. Das wird damit aufgeweicht.

Ist aber umständlich mit begin und end. Wenn dann doch besser mit let statt var, so wie es in JavaScript ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 4 von 6   « Erste     234 56      

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