2013-10-08 9 views
10

ich in letzter Zeit wurde über die Verwendung lokaler Variablen zum Beispiel denken:Sollte ich weniger lokale Variablen verwenden oder auf Prägnanz setzen?

Sollte ich es vorziehen, diese:

String firstString = classString.getFirstString(); 
String secondString = classString.getSecondString(); 

ClassGlobal.execute(firstString, secondString); 

oder diese;

Ich persönlich würde das spätere bevorzugen, da es prägnanter ist und zwei zusätzliche Instanzvariablen nicht benötigt. Aber ist es eine gute Sache zu tun? Zahle ich Code-Lesbarkeit für Prägnanz? Oder ist es nur ok, einen zu benutzen?

+4

Dies ist in hohem Maße eine Frage des Stils.Meine allgemeine Vorgehensweise besteht darin, nur eine lokale Variable zu erstellen, wenn ich sie mehr als einmal verwenden möchte, oder wenn das Konstrukt, das ich verwende, sehr ausführlich ist und hässlich aussehen würde, wenn es anstelle der Variablen verwendet würde. Was die Performance betrifft, wäre ich nicht überrascht, wenn sich der Compiler nicht dazu entschließen würde, viele der Aufgaben trotzdem zu integrieren. – DaveH

+1

Ich bevorzuge den Code so einfach und klar wie möglich. Was denkst du ist einfacher und klarer? Erinnert sich die Benennung der Variablen an etwas, das Sie nicht mit dem Methodennamen herausfinden können? –

+1

(Es sind die Globals dort, die mich am meisten betreffen.) –

Antwort

3

Wie für mich, sollten Sie Code Lesbarkeit Priorität vor der Minimierung der Anzahl der Variablen. Sie können diese Codezeile perfekt verstehen, aber für jeden Programmierer, der Ihren Code in der Zukunft wiederholt, wird er die Verwendung von lokalen Variablen schätzen (noch besser, wenn Sie gute "selbstdefinierende" Namen verwenden).

+1

Und alles andere jemals! Lesbarkeit steht immer an erster Stelle. –

+0

@TFNelson Außer wenn es nicht passiert, was * passiert *. –

+0

@Dave Newton ah, natürlich. Alle Regeln werden mit Ausnahme der Ausnahmen ohne Ausnahmen befolgt. –

3

In diesem speziellen Fall spielt es keine Rolle. Wenn Ihre Zeile für sich allein lesbar ist, müssen die Variablen nicht getrennt werden. Sobald Sie jedoch anfangen, mehr Logik als ein Getter hinzuzufügen, würde ich dazu neigen, sie zu trennen. Betrachten Sie den folgenden Code ein:

ClassGlobal.execute(classString.getFirstString().toLowerCase().substring(0, 10), 
    classString.getSecondString().toLowerCase().substring(0, 10)); 

Diese Linie viel besser wäre, wenn Sie trennen firstString und secondString und ordnen sie aussagekräftige Namen. Wie bei den meisten Dingen im Code gibt es keinen "besten" Weg. Ich würde eher auf der Seite der Lesbarkeit irren.

2

Ich werde für die erste gehen. Es erhöht die Lesbarkeit. Bei der zweiten reduziert es definitiv einige Zuweisungsoperationen (!), Aber in den meisten Fällen ist dies eine vernachlässigbare Menge an Leistungsverbesserung. Also besser streng mit Lesbarkeit

ALSO, Sie sollten nicht über die vorzeitige Optimierung kümmern. Darüber hinaus machen Compiler heutzutage diese Art der Optimierung für Sie.

+0

und wahrscheinlich durch den Compiler in Release-Builds optimiert ... –

+0

yup .. Compiler macht auch diese Optimierung für Sie – stinepike

2

Wenn Sie Code erstellen können, indem Sie den Locals einen guten Namen geben, erstellen Sie die zusätzlichen Locals (auch nützlich, wenn Sie interaktiv debuggen müssen ...).

Wenn die Einheimischen keine Bedeutung hinzufügen würden, weil die Methoden, die aufgerufen werden, so gut benannt sind, und Sie eine ziemlich eiserne Fähigkeit haben, Unit Test statt Debug und Breakpoint .... gehen für die kompakte Notation kann besser fühlen. Aber in den meisten Fällen tendiere ich zur Kreation der Einheimischen.

12

Im Zweifelsfall nur daran erinnern, dieses Zitat von Coding Horror:

immer Code, als ob die Person, die den Code Aufrechterhaltung endet ein gewaltsamer Psychopath ist die, wo Sie leben weiß.

Die Bedeutung dieses Zitats ist "machen Sie es so einfach wie möglich, den Code zu verstehen und zu lesen." Später, wenn Sie das Programm in 5 Jahren weiter pflegen müssen, wird es für Sie einfacher, wenn Sie es so leserlich wie möglich machen. Das ist eine Win-Win-Situation für alle.

+4

upvote für die Zitierung von Jeff. –

+4

Wow! Das sind die meisten Upvotes, die ich je bekommen habe. Ich habe nie die Macht erkannt, die ein Jeff-Zitat auf Glaubwürdigkeit und Upvotes hat. Lediglich seinen Namen zu erwähnen zieht Leute an, um den Beitrag zu verbessern – Domecraft

+0

Es ist ein besonders resonantes Zitat. –

0

Die Lesbarkeit ist das Wichtigste. Versuchen Sie, Ihren Code in 1 Jahr zu lesen, wenn es nicht gut ist, und Sie werden die Antwort bekommen.

Verwandte Themen