Mit Delphi verwenden Sie eher temporäre Variablen als in anderen Sprachen?

7

Da Delphi Sie dazu bringt, bis zum var-Abschnitt einer Methode zu gehen, um eine lokale Variable zu deklarieren, finden Sie, dass Sie " Curly's Law " (Wiederverwendung von Variablen) häufiger als du es in der Schule getan hast (außer natürlich, du hast Pascal im College programmiert).

Wenn ja, was tun Sie, um sich von dieser Gewohnheit zu lösen, besonders in Funktionen, in denen Sie eine große Anzahl von Eigenschaften erhalten und / oder setzen müssen. Gibt es einen Schwellenwert, bei dem es zulässig ist, TempInt : Integer und TempStr : String zu deklarieren. (Verwenden Sie ein 'e' in Temp manchmal und nicht andere Zeiten?)

    
Peter Turner 05.08.2009, 18:37
quelle

11 Antworten

15

Ich verwende Variablen fast nie wieder. Ich hasse es nie zu sagen, aber es ist nah an nie .

Hier ist warum:

  • Kleine Methoden (Es empfiehlt sich, Methoden und Eigenschaften-Getters / Setter so kurz wie möglich zu halten).
    • Wenn nur eine Sache erledigt ist nicht nötig um Variablen
    • wiederzuverwenden
    • Der var-Bereich befindet sich immer auf dem Bildschirm.
  • Der Compiler verwendet den Speicher bei Bedarf erneut, sodass die Wiederverwendung nur eine Lazy Coder Krücke ohne Leistungsverbesserungen ist.
  • Neuere Versionen von Delphi haben STRG + UMSCHALT + V um eine Variable zu deklarieren, wenn ich mich faul fühle.
  • Die Wiederverwendung von Variablen erschwert das Debugging - es wird mehr Zeit und Mühe für die Wartung und Entwicklung (für jede ernsthafte Anwendung) aufgewendet. Machen Sie also immer Dinge einfacher, sogar wenn es die Entwicklung etwas schwieriger macht.
  • Bevorzugt benutzerdefinierte Typen , sodass ein Kontostand ein bestimmter Typ ist, nicht nur eine Währung. Das bedeutet, dass Variablen weniger wiederverwendbar sind.
  • Für Loop-Variablen (eine häufig verwendete, wiederverwendbare Variable) werden jetzt weniger verwendet, als wir für und den Iterator zusammen verwenden können.
  • Meine Variablen haben beschreibende Namen , daher wäre es nicht sinnvoll, sie außerhalb des Kontexts zu verwenden.

Im Allgemeinen mag ich, dass alle Variablen ganz oben stehen, aus dem gleichen Grund, aus dem ich gerne einen Schnittstellenabschnitt auf meinen Einheiten habe. Es ist so, als hätte man eine Zusammenfassung auf einem Papier - geben Sie mir eine allgemeine Vorstellung von dem, was vor sich geht, ohne das ganze Papier lesen zu müssen. Delphi könnte von der Möglichkeit profitieren, Variablen innerhalb eines für Schleifen oder andere Anfang / Ende Blöcke zu deklarieren, aber ich weiß nicht, wie viel das ist würde von der Sauberkeit und Lesbarkeit des Delphi-Codes ablenken.

    
Jim McKeeth 22.07.2009, 02:48
quelle
6

Das ist nur eine Frage der Disziplin. Ja, Delphi würde wahrscheinlich besser durch Inline-Variablendeklaration bedient, aber das ist nicht wirklich eine große Sache. Seien Sie sicher, dass Sie Ihre Variablen auf eine beschreibende Weise benennen, und dann wird es sich nur peinlich anfühlen, sie falsch zu verwenden. Und, wie Stephan Eggermont sagte, wenn Ihre Methoden wirklich so lange werden, dann ist das ein völlig anderer Code-Geruch.

    
JosephStyons 21.07.2009 13:29
quelle
5

Nicht wirklich. Da meine Methoden sehr klein sind, ist die Var-Sektion nicht weit entfernt. Da meine Methodengröße seit der Universität stark zurückgegangen ist, würde ich sagen, dass ich sie weniger oft breche.

    
Stephan Eggermont 21.07.2009 12:58
quelle
5

Ich tendiere definitiv dazu, lokale Variablen wie 'Findex' (oder einfach nur 'i') wiederzuverwenden, wenn die Routine mehrere verschiedene iterative Abschnitte enthält. Nicht wirklich die beste Praxis, die ich denke, aber ich würde denken, dass es nur wirklich offensichtlich ist, wo ich es tue, und offensichtlich überschneidet sich der Gebrauch nicht.

Es ist normalerweise keine große Sache, zum Anfang der Routine zurückzukehren und die neuen Variablen einzugeben, obwohl ich nichts von Ctrl-Shift-V wusste (wird das später versuchen!).

Es wird interessant sein zu sehen, was alle anderen sagen. : -)

    
robsoft 21.07.2009 13:32
quelle
3

Ich tendiere dazu, lokale vars nicht als allgemeine Sicherheitsregel zu verwenden. Ich liebe das neue "var" Live Template Zeug in d2007 +. Geben Sie einfach var [tab] ein und der Helfer erscheint. Überprüfen Sie auch Ctrl-Shift-D (andere erwähnten Ctrl-Shift-V für lokale Vars), um ein Feld zu deklarieren.

    
MarkF 21.07.2009 13:39
quelle
2

Das Deklarieren von Variablen ist sehr einfach - manchmal werden sie automatisch erstellt ('für' Schleifenvorlage), zu anderen Zeiten können Sie einfach das 'Refactoring Variable' Refactoring benutzen (oder 'Add Local Var' wenn Sie MMX verwenden) sollte).

    
gabr 21.07.2009 13:05
quelle
2

Sie können Ihren eigenen Codierungsstil entwickeln, der Variablen nach Bedarf verwendet. Ich benutze in der Regel einzigartige vars (90%) mit ein paar Temp vars (10%) bei Bedarf.

Es hängt von der Art der Var ab. Wenn es eine Variable ist, die anderen Code unterstützt (Zähler für Schleifen, SQL-Strings erstellen usw.), dann ist eine Temp-Variable, die Sie wiederverwenden können, hilfreich. In diesem Fall sind Ihre Temp-Variablen als "Wegwerf" -Vars in Code-Abschnitten nützlich. Fügen Sie einfach einen Kommentar zu Ihren var-Deklarationen hinzu, der die Temp-Variablen angibt.

d. // temp vars werden wie in dieser Prozedur benötigt wiederverwendet - & gt; Löschen / neu initialisieren sie nach / vor der Verwendung.

Abgesehen davon vermeide ich Temp vars & amp; Verwenden Sie sie niemals, um kritische Daten zu speichern. Eine eindeutige var sollte dann verwendet werden, um Verwirrung zu vermeiden & amp; machen die Lesbarkeit / Pflege des Codes klarer.

    
Forer 22.07.2009 08:37
quelle
1

Ich denke, Delphi macht die Ausnahme mit der übermäßigen Verwendung von temporären Variablen. Die meiste Zeit, wenn ich eine Funktion / Prozedur erstelle, wo ich weiß, dass ich Loops oder temporäre Strings benötige, mache ich als Erstes ein var i, j: integer; tmp: Zeichenfolge; und füge bei Bedarf mehr hinzu:)

    
TheBrain 21.07.2009 12:58
quelle
1

Als langjähriger Delphi-Benutzer (seit 1.0) ist das die Hauptsache, die ich an Pascal hasse. Alle anderen modernen Sprachen unterstützen die Definition zum Zeitpunkt der Verwendung, doch Delphi besteht weiterhin im var-Abschnitt, und Delphi-Programmierer bestehen in lächerlichen Hand-waving-Mätzchen, um es zu rechtfertigen.

    
anon 21.07.2009 13:36
quelle
1

Well Curly hatte einen guten Punkt. Ich bin in dieser Hinsicht gelegentlich ein Sünder. In der Regel nur eine temporäre Zeichenkettenvariable für mehr Bequemlichkeit als alles andere.

Um ehrlich zu sein habe ich nie wirklich darüber nachgedacht ... bis jetzt. Ich habe kein Problem damit, dass der VAR-Bereich dort ist, wo er ist, wie es seit Delphi 1.0 üblich ist.

Um die Frage zu beantworten, verwende ich nur eine temporäre Variable, normalerweise eine Zeichenfolge, und normalerweise nur, um ein paar leichte Leistungsverbesserungen zu erzielen. Habe damit kein Problem.

    
Gerard 21.07.2009 22:46
quelle
1

Ich hätte wahrscheinlich gefunden, dass dies ein größeres Problem wäre, wenn ich nicht CTRL-SHIFT-V als Verknüpfung zum VAR-Abschnitt gehabt hätte. Ich schreibe hier keine GIGANTIC-Methoden, aber manchmal geraten sie ein wenig außer Kontrolle (und das kann ich natürlich rechtfertigen) und es hilft sehr. Ich bin mir nicht sicher, ob diese Abkürzung von cnTools oder GExperts kommt, aber sie sind beide sehr nützlich und ich würde sie beide empfehlen.

    
Peter Turner 22.07.2009 13:35
quelle

Tags und Links