[Swift] Vielmehr ist es sinnvoll, var zu vermeiden und nur dann mit let zu deklarieren, wenn die Zuweisung des Anfangswertes einen Zweig enthält.

Vorausgesetzte Umgebung:

Nicht auf Swift beschränkt, wird "das Vermeiden einer Neuzuweisung zu Variablen (so weit wie möglich)" allgemein als Theorie zum Schreiben von sicherem Code verstanden.

Ähnliche Links: Warum möchten Sie eine Neuzuweisung zu Variablen vermeiden?

In der Praxis ist es jedoch leicht zu glauben, dass Sie den Neuzuweisungscode schreiben müssen, wenn die Zuweisung des Anfangswertes wie unten gezeigt einen Zweig enthält.

Probe A.


//Die Variable foo ist ""hoge" or "fuga"Die Absicht ist, dass einer von ihnen initialisiert wird und sich danach nicht ändert. "
var foo = ""
if isHoge {
    foo = "hoge"
} else {
    foo = "fuga"
}

Der obige Code kann eine Neuzuweisung zur Variablen "foo" nicht verhindern. Es bleibt möglich, dass foo irgendwo auf einen anderen Wert als (" hoge "oder" fuga ") gesetzt wird.

Der obige Code kann wie folgt verbessert werden.

Probe B.


let foo: String
if isHoge {
    foo = "hoge"
} else {
    foo = "fuga"
}

** Wenn es einen Pfad gibt, der nicht initialisiert ist, macht der Compiler einen Fehler **. Wenn Sie also beabsichtigen, "den Anfangswert einmal festzulegen und ihn dann nicht neu zuzuweisen",

--Variable Initialisierungsauslassungen können verhindert werden.

In dieser Hinsicht halte ich den Code in Beispiel B für sicherer.

Recommended Posts

[Swift] Vielmehr ist es sinnvoll, var zu vermeiden und nur dann mit let zu deklarieren, wenn die Zuweisung des Anfangswertes einen Zweig enthält.
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
[Java] Wenn Sie eine Zeichenfolge in die switch-Anweisung einfügen, müssen Sie sie zu einem konstanten Ausdruck machen
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
In Swift wird JSON beim Löschen im Snake-Fall und in der problematischen Bewältigungsmethode übergeben
[Ruby] Denken, wenn sich vor der Methode kein Empfänger befindet (wie es aussieht)
[Swift] Ermittelt das Timing, wenn der Wert von textField geändert wird
[Swift] Wenn Sie wissen möchten, ob die Anzahl der Zeichen in String mit einer bestimmten Anzahl übereinstimmt ...
Wirf eine Ausnahme und fange, wenn es keinen Handler gibt, der dem Pfad im Frühjahr entspricht
Stellen Sie die Sensorinformationen von Raspberry Pi in Java grafisch dar und überprüfen Sie sie mit einem Webbrowser
Generieren Sie mit TableGenerator of Hibernate (JPA) eine Seriennummer und speichern Sie diese in der ID von String.
[Java] Geben Sie das Ergebnis von ffprobe -show_streams in JSON aus und ordnen Sie es einem Objekt in Jackson zu
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
[Java small story] Überwachen Sie, wann der Liste ein Wert hinzugefügt wird
Anfangswert, wenn die Spring-Anforderung keine Eigenschaft des Formularobjekts enthält
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
Ist es möglich, die Bibliothek (aar) in die Android-Bibliothek (aar) zu stellen und zu verwenden?
[Hinweis] [Anfänger] Schreiben, wenn der Wert eines Array-Elements in einem sich wiederholenden Satz von Ruby geändert wird
Wenn Sie einem Argument in einer Ruby-Methode neu zuweisen und dann "super" aufrufen → Das neu zugewiesene wird verwendet
Ich habe versucht, eine Webanwendung zu erstellen, die Tweets mit einer Vue-Word-Cloud durchsucht und die Tendenz untersucht, was im zugehörigen Profil geschrieben steht