Podcast
Videos
September 5, 2022
Nov 2022
7 Min

Ergänzen fehlender Xcode-Funktionen - Teil 3

Nach Teil 1 und Teil 2 unserer Serie über fehlende Xcode Funktionen und wie man sich behelfen kann, folgen in diesem Eintrag mehr Informationen zu Fehlenden Code Conventions und TODO-Warnungen.

Fehlende Code Conventions und TODO-Warnungen

Swift erlaubt es - wie die meisten Programmiersprachen - das gleiche Funktionsverhalten einer App auf viele verschiedene
Weisen zu implementieren. Während man im Allgemeinen nicht sagen kann, dass es "die perfekte" Implementierung einer
Funktion gibt, kristallisieren sich dennoch mit der Zeit für jede Programmiersprache und Plattform eine ganze Menge von
zu vermeidenden und eher zu bevorzugenden Implementierungen heraus. Um möglichst hohe Code-Qualität zu erreichen, lohnt
es sich daher für jede längerfristig angelegte Arbeit – besonders wenn mehrere Entwickler beteiligt sind – Code-Konventionen zu erarbeiten und sich an diesen zu orientieren.

Während das offizielle Buch der Swift-Entwickler The Swift Programming Language
beim Erläutern der einzelnen verfügbaren Funktionen bereits viele sinnvolle Beispiele für guten Programmierstil vorgibt,
ist es diesbezüglich doch eher zu zeitaufwändig und unvollständig (wenn auch trotzdem lesenswert). Als offizielle
Apple-Quelle seien ergänzend die API Design Guidelines
empfohlen. Als bessere Alternative gibt es die zusammengefassten und mit Beispielen versehenen Swift Code Conventions
von GitHub und von
raywenderlich.com, an die auch wir uns bei Jamit Labs halten.

Das Open Source Projekt SwiftLint hat es sich zur Aufgabe gemacht, die GitHub
Conventions automatisiert in Xcode zu überprüfen. Nach einer Installation des SwiftLint-Tools via Homebrew (brew install swiftlint), kann nun jedes Projekt durch drei einfache Schritte um einen automatisierten Warnings- und Error-Generator
bei Nichteinhaltung von bestimmten Code-Konventionen erweitert werden:

    Füge ein Build-Script mit diesem Inhalt für das App- oder Framework-Target hinzu:
if which swiftlint > /dev/null; then
   swiftlint
else
   echo "warning: SwiftLint not installed, download it from https://github.com/realm/SwiftLint"
fi

Hinweis: Man beachte, dass beim Einfügen des Scripts in das Build-Script-Feld in Xcode die Formatierung des Textes
verloren geht. Diese lässt sich mit ein paar Einrückungen jedoch schnell wieder herstellen, um den Code im Script
lesbarer zu halten.

    Erstelle danach im Hauptverzeichnis des Projekts eine Datei namens .swiftlint.yml mit folgender Konfiguration (bei Bedarf änderbar):
# some rules are only opt-in
opt_in_rules:
- empty_count
- missing_docs

# paths to include during linting. `--path` is ignored if present.
included:
- Sources

# paths to ignore during linting. Takes precedence over `included`.
excluded:
- Carthage
- Sources/Constants

# configurable rules can be customized from this configuration file
line_length: 180

Als drittes sollte nun noch eine Einstellung von Xcode angepasst werden, da die Regel trailing_newline sonst beim
Standardverhalten von Xcode Warnungen wegen falsch gesetzter Leerzeichen meldet, die man ganz einfach vermeiden kann:
Gehe in die Einstellungen von Xcode ("Preferences"), wähle dort den Reiter "Text Editing" und stelle sicher, dass neben
"Automatically trim trailing whitespace" auch "Including whitespace-only lines" angehakt ist. Dies stellt sicher, dass
bei Umbrüchen und leer gelassenen Zeilen entstehende Leerzeichen automatisch gelöscht werden. Hier kann übrigens auch
gleich die Empfehlungslinie für die Zeilenbreite in Xcode angepasst werden unter "Page guide at column" - wir empfehlen
180 als Kompromiss zwischen ständigen Zeilenumbrüchen und Lesbarkeit von Code.

Diese drei Schritte sorgen dafür, dass bei jedem Entwickler, der den Swift Linter installiert hat, automatisch
Warnungen oder in bestimmten Fällen sogar Errors in Xcode generiert und angezeigt werden, wenn die konfigurierten
Konventionen nicht eingehalten werden. Falls jemand das Tool SwiftLint nicht installiert hat, wird wenigstens eine
Warnung angezeigt, dass der Swift Linter nicht installiert ist. Als netten Nebeneffekt zeigt SwiftLint zusätzlich auch
Code-Kommentare, die ein TODO: oder FIXME enthalten als Warnungen an, damit man diese nicht so schnell vergessen
oder übersehen kann.

Weiterführende Links

Andreas Link
Andreas Link
Anh Dung Pham
Anh Dung Pham
Cihat Gündüz
Cihat Gündüz
Andreas Link
Ekrem Sentürk
Eva Maria Stock
Eva-Marie Stock
Andreas Link
Giulia Maier
Inken Marei Kolthoff
Inken Marei Kolthoff
Janina Baumann
Janina Baumann
Janina Bokeloh
Janina Bokeloh
Jeanette Schmidt
Jeanette Schmidt
Jens Krug
Jens Krug
Kajorn Pathomkeerati
Kajorn Pathomkeerati
Karl Barth
Karl Barth
Kay Dollt
Kay Dollt
Murat Yilmaz
Murat Yilmaz
Thorsten Hack
Thorsten Hack
Thorsten Hack
Thorsten Hack
Inken Marei Kolthoff
Cynthia Murat
Inhaltsverzeichnis

Weitere Artikel

App-Entwicklung auf Hackathons - ein Vorbereitungs-Tutorial
Inken Marei Kolthoff
26.11.2022
6 Min

App-Entwicklung auf Hackathons - ein Vorbereitungs-Tutorial

Ganz gleich, welches Ziel man als Teilnehmer hat: Neues ausprobieren, eine eigene Idee umsetzen oder auch einfach nur die Freude an der Herausforderung

Artikel lesen
Talentförderung @ Jamit Labs
Janina Baumann
26.11.2022
3 Min

Talentförderung @ Jamit Labs

Das Jahr geht in den Endspurt - und wir geben nochmal richtig Gas:

Artikel lesen
Erfolg messbar machen?
Janina Bokeloh
26.11.2022
3 Min

Erfolg messbar machen?

Es gibt viele gute Ideen für Apps. Einige werden umgesetzt, andere nicht. Landet die eigene App in den App Stores, hat man es geschafft - oder?

Artikel lesen

Jetzt kostenloses Strategiegespräch sichern!

Die Beratungen sind grundsätzlich schnell ausgebucht, deshalb fülle jetzt in 2 Minuten das kurze Formular aus.

Jetzt Strategiegespräch sichern