Swift-Coding-Standards – 10 häufige Codierungsfehler – Teil I

Apr 23 2023
.
  1. Verwendung der Return-Anweisung für eine einzeilige Funktion
  2. func add(_ a: Int, _ b: Int) -> Int {
       a + b
    }
    

func fetchData(completion: () -> ()) {
  // fetch logic
  completion()
}

func fetchDataEscaping(@escaping completion: () -> ()) {
  // fetch logic
  completion()
}

func onButtonClick() {
  // call function with non-escaping (default) closure
  fetchData { 
    updateUI()
  }

  // call function with escaping closure
  fetchDataEscaping { [weak self]
    self?. updateUI()
  }
}

var optionalVar: String? = nil

enum ViewConstants {
   static let imageHeight = 212.0
}

let value = try XCTUnwrap(optionalValue)

if let value1 = optionalValue1 {
 if let value2 = optionalValue2 {
 if let value3 = optionalValue3 {
 // perform some operation using value1, value2, and value3
 } else {
 // handle case where value3 is nil
 }
 } else {
 // handle case where value2 is nil
 }
} else {
 // handle case where value1 is nil
}

if let value1 = optionalValue1,
 let value2 = optionalValue2,
 let value3 = optionalValue3 {
 // perform some operation using value1, value2, and value3
} else {
 // handle case where any of the optional values are nil
}

final class MyClass {
    // class implementation goes here
}

  • Verbesserte Leistung: Wenn Sie eine Methode oder Eigenschaft als „final“ markieren, kann der Compiler bestimmte Optimierungen vornehmen, die die Leistung Ihres Codes verbessern.
  • Bessere Codeorganisation: Dadurch kann Ihr Code leichter lesbar und verständlich sein, insbesondere für andere Entwickler, die an derselben Codebasis arbeiten.
  • Verbesserte Codesicherheit: Durch die Verhinderung von Unterklassen oder Methodenüberschreibungen können Sie das Risiko unbeabsichtigten Verhaltens oder Sicherheitslücken in Ihrem Code verringern.
  • Einfachere Wartung: Dies kann die Wartung Ihres Codes im Laufe der Zeit erleichtern, da Sie sich nicht so viele Sorgen über unbeabsichtigte Nebenwirkungen von Änderungen an diesem Code machen müssen.
  • „Öffentlich“: Die öffentliche Zugriffsebene ermöglicht den Zugriff von jeder Quelldatei, jedem Modul oder Framework. Auf als öffentlich markierte Klassen, Eigenschaften und Methoden kann von jedem anderen Modul (z. B. einem Swift-Paket) oder Framework aus zugegriffen werden.
  • „intern“: Die interne Zugriffsebene ermöglicht den Zugriff innerhalb desselben Moduls oder Frameworks. Auf als intern markierte Klassen, Eigenschaften und Methoden kann nur innerhalb desselben Moduls oder Frameworks zugegriffen werden.
  • „privat“: Die private Zugriffsebene schränkt den Zugriff auf denselben Deklarationsblock ein. Auf als privat markierte Klassen, Eigenschaften und Methoden kann nur innerhalb derselben Klasse, Struktur oder Aufzählung zugegriffen werden. Wenn also beispielsweise eine Funktion nicht außerhalb von struct/class/enum verwendet wird, müssen Sie „private“ verwenden.