AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

10.4 : Warum Inline-Variablen?

Ein Thema von himitsu · begonnen am 27. Mai 2020 · letzter Beitrag vom 1. Jun 2020
Antwort Antwort
Seite 5 von 5   « Erste     345
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.823 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#41

AW: 10.4 : Warum Inline-Variablen?

  Alt 29. Mai 2020, 13:30
Wahrscheinlich denkt man erst, es ist ein Boolean, aber Pustekuchen.
So wie in dem verlinkten Vortrag gesagt wurde, wenn man seine Variablen m, k und w nennt, dann sollte man von Typinferenz die Finger lassen.
Ja, wenn ich meinen Krams nicht vernünftigt oder irreführend benenne, dann kann der Typ helfen, das zu richtig zu stellen.
Bei solchen Fällen frag ich den Entwickler beim Code review aber in aller Regel, ob er seine Variablen, Parameter sonstiges nicht lieber vernünftig benennen möchte.
"Naming things" ist nicht umsonst eins der schwierigsten und oftmals falsch gemachten Dinge in der Softwareentwicklung.

Aber als allgemeines Argument gegen Typinferenz ist es mMn unhaltbar.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.575 Beiträge
 
Delphi 10.4 Sydney
 
#42

AW: 10.4 : Warum Inline-Variablen?

  Alt 29. Mai 2020, 14:42
Wahrscheinlich denkt man erst, es ist ein Boolean, aber Pustekuchen.
Ja, wenn ich meinen Krams nicht vernünftigt oder irreführend benenne, dann kann der Typ helfen, das zu richtig zu stellen.
Ich überlege gerade verzweifelt, wann ich das letzte Mal in einem Projekt ein Problem damit hatte, was für ein Typ magst Du sein...? Wenn musste ich deswegen in den var-Block schauen... das ist sehr, sehr lang her. Meistens ist es aus dem Kontext heraus eindeutig und dank guter Namen kein Problem. Klar, wenn ich in ein bestehenden Projekt einsteige und die ganzen Datentypen nicht kenne, dann mag man mal schauen, aber selbst dann sollte es sich schnell erledigen.

Von daher stimme ich Stevie vollends zu

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.658 Beiträge
 
Delphi 10 Seattle Enterprise
 
#43

AW: 10.4 : Warum Inline-Variablen?

  Alt 29. Mai 2020, 14:57
Ich kann es im Internet nicht mehr finden, ich meine es war zur Einführung von "auto" in C++11. Auf Delphi übertragen wäre es etwas wie

Zitat:
Oh, is that a TFunc<IEnumerable<TPair<TFizzbuzz, TNiclausWirth>>> in your pocket, or are you just happy to see me?
Grade so einen Typ nicht austippen zu müssen wenn man ihn z.B. eh nur weitergibt ist es schon wert 😎
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.164 Beiträge
 
Delphi 10.4 Sydney
 
#44

AW: 10.4 : Warum Inline-Variablen?

  Alt 31. Mai 2020, 13:52
Weiterer positiver Umstand gerade von Inline vars gerade bei cross Plattform -Entwicklung festgestellt:

Eine Variable, die nur für eine bestimmte Plattform ({$IFDEF Linux ...) benötigt wird, wird auch nur in diesem IDFDEF Zweig definiert. Damit entfällt z.B. der Compiler Hinweis: Variable definiert, aber nicht verwendet, wenn ich die Windows-Versino kompiliere.

Außerdem entfällt auch die Warnung, dass eine bestimmte Variable Plattformspezifisch sei wenn Sie außerhalb der Plattform definiert wurde...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.400 Beiträge
 
Delphi 10.4 Sydney
 
#45

AW: 10.4 : Warum Inline-Variablen?

  Alt 31. Mai 2020, 14:06
Damit entfällt z.B. der Compiler Hinweis
Komisch, ich hatte das nie,

aber hatte auch die IFDEFs ebenfalls im Variablenblock.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.164 Beiträge
 
Delphi 10.4 Sydney
 
#46

AW: 10.4 : Warum Inline-Variablen?

  Alt 31. Mai 2020, 14:36
Damit entfällt z.B. der Compiler Hinweis
Komisch, ich hatte das nie,

aber hatte auch die IFDEFs ebenfalls im Variablenblock.
Ja, meistens habe ich das auch, aber hin und wieder vergisst man das. Letztlich hat man dadurch mehr Schreibarbeit, da man schon im VAR Bereich u.U. mehrfach mit IFDEFS rum hantieren muss. Das entfällt jetzt.

Die Liste der positiven Auswirkungen wird immer länger...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.577 Beiträge
 
#47

AW: 10.4 : Warum Inline-Variablen?

  Alt 31. Mai 2020, 19:23
Um nochmal auf den Titel einzugehen:

Ich habe schon länger nicht mehr Delphi programmiert, aber das eigentlich tolle an den inline vars ist doch: Initialisierung bei Deklaration.

Eine Variable mit undefiniertem Inhalt ist doch eigentlich unbrauchbar (bis zur Initialisierung). Dass das jetzt in einer Zeile passieren kann, macht das ganze einfach lesbarer und aufgeräumter.

Und dass der Zugriff darauf nur einer Warnung ist, finde ich auch nur mäßig sinnvoll. Wenn die nicht sicher initialisiert wird, sollte der Code nicht kompilieren. Schluss aus.
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
888 Beiträge
 
Delphi 2007 Professional
 
#48

AW: 10.4 : Warum Inline-Variablen?

  Alt 31. Mai 2020, 19:35
Und dass der Zugriff darauf nur einer Warnung ist, finde ich auch nur mäßig sinnvoll. Wenn die nicht sicher initialisiert wird, sollte der Code nicht kompilieren. Schluss aus.
Wenn der Compiler das auch wirklich immer korrekt erkennen würde ...
Tut er aber nicht, auch wenn das tatsächlich von Version zu Version besser wird.
Thomas Mueller
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
437 Beiträge
 
Delphi 10.3 Rio
 
#49

AW: 10.4 : Warum Inline-Variablen?

  Alt 1. Jun 2020, 14:40
In den Links, die Harry Stahl angegeben hat, findet sich auch der Hinweis von Stefan Glienke, dass bei einer inline deklarierten Variable die Unit, in der der Typ der Variable deklariert wird, nicht mehr zwingend in der Uses-Angabe aufgeführt sein muss:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  var DateiListe := TDirectory.GetFiles('D:\Temp\', '*.*');
end;
funktioniert auch, wenn System.Types nicht in der Uses-Liste aufgeführt ist.

Aus Sicht eines Hobbyprogrammierers finde ich die Kleinlichkeit, die Konstruktionsmerkmal von Pascal ist, in aller Regel eher hilfreich, weil sie zu einem Mindestmaß an Genauigkeit und Strukturiertheit zwingt.
Ich könnte mir allerdings vorstellen, die var-Liste sozusagen über begin hinaus fortzuführen, um initialisierte Variablen zu bekommen (und würde dabei immer den Typ angeben). Und vielleicht noch bei Schleifen. Ansonsten war die Sache mit dem Gültigkeitsbereich kaum je eine Quelle von Fehlern (da gibt es massenhaft andere Quellen).
  Mit Zitat antworten Zitat
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 +2. Es ist jetzt 20:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf