Ich arbeite an verschiedenen in Swift geschriebenen Softwareprojekten und befinde mich häufig in einer Situation, in der ich Diagramme erstellen muss, die auf der Prämisse des vorhandenen Quellcodes basieren, entweder zu Dokumentationszwecken oder zur Erläuterung des Systemdesignkonzepts.
UML als universelle Modellierungssprache ist leicht zu verstehen und stellt eine Standardmethode zur Visualisierung des Systemdesigns dar. Grafische Modellierungswerkzeuge, z. B. Visio oder StarUML, sind sehr flexibel, aber ich habe oft Probleme, die Komponentenbeziehung oder andere Layoutaspekte schnell zu zeichnen.
Mithilfe von Textmodellierungswerkzeugen kann ich Software-Diagramme effizienter erstellen und bearbeiten. Alles begann, als ich sequencediagram.org entdeckte und wie einfach es ist, Sequenzdiagramme zu erstellen, indem Sie Skripten und Zeichnungen für Textnotationen kombinieren, indem Sie auf dasselbe Modell klicken und es ziehen.
Dann entdeckte ich PlantUML , ein Open-Source-Tool zum Erstellen verschiedener Arten von UML-Diagrammen aus einer einfachen Textsprache . Um PlantUML herum gibt es ein lebendiges Ökosystem. Lassen Sie mich auf PlantText hinweisen , ein gut gestaltetes Online-Tool zum Generieren von Bildern basierend auf der PlantUML-Sprachreferenz.
Aber zurück zu Swift und dem Anwendungsfall, um ein Klassendiagramm aus vorhandenem Swift-Quellcode zu generieren. Wie kann das gemacht werden? Transformieren Sie den Quellcode durch Parsen in ein Skript, das der PlantUML-Sprache entspricht, und erstellen Sie dann mit einem Online-Tool das eigentliche Diagramm. Es gibt bereits verschiedene Open-Source-Projekte, die sich mit diesem Prozess befassen. Zum Beispiel gibt es
Für diese Tools muss der Benutzer jedoch zusätzliche Abhängigkeiten (z. B. NodeJS, Graphviz oder Python) manuell installieren. Einige der Projekte werden nicht mehr gepflegt und sind in Bezug auf die Funktionalität eingeschränkt. Und keines dieser Tools ist in Swift geschrieben :(
Ich wollte ein Tool für Swift-Entwickler bereitstellen, das in Swift geschrieben wurde! Dadurch können ich und potenzielle Mitwirkende hoffentlich schneller und effizienter an zukünftigen Verbesserungen arbeiten.
Und so begann ich mit der Arbeit an SwiftPlantUML , einem Dienstprogramm, das als Xcode Source Editor Extension verfügbar ist .
Sie können ein Diagramm aus ausgewählten Codezeilen oder aus einer ganzen in Xcode angezeigten Datei erstellen. Das Klassendiagramm wird dann in Ihrem Browser geöffnet.
Sie können es auch SwiftPlantUMLals Befehlszeilentool oder als Swift-Paket verwenden. Dies ist besonders hilfreich, um mehrere Quelldateien als Grundlage für das Diagramm zu verwenden. Oder um Anpassungen während der Generierung anzuwenden.
Die vollständigen Funktionen und Ausblicke auf die bevorstehende Roadmap finden Sie unter https://github.com/MarcoEidinger/SwiftPlantUML
Pull-Anfragen, Probleme und Vorschläge sind herzlich willkommen.
Ursprünglich veröffentlicht unter https://blog.eidinger.info .
Schutz Ihrer Codebasis: Umgang mit unerwarteten Enum-Werten Haben Sie jemals eine Situation erlebt, in der Ihre App aus dem Nichts abstürzte, was bei einer Untersuchung ergab, dass das Backend einen Wert für ein bestimmtes Enum-basiertes Feld bereitstellte, das nicht innerhalb des Enum im Code vorhanden ist? Betrachten Sie das folgende Beispiel: Ohhh, ich liebe Tee. Aber was ist, wenn wir favouriteBeverage in den JSON-Daten von Tea in Juice ändern (ein Wert, der in der Aufzählung Beverage nicht vorhanden ist)? Konzentrieren Sie sich auf den Teil der Meldung: „Beverage kann nicht von ungültigem String-Wert Juice initialisiert werden.“ Wenn es sich um eine tatsächliche App anstelle eines Playground-Codes gehandelt hätte, wäre die App abgestürzt. Wie sorgen wir also dafür, dass unsere App, selbst wenn das Backend einen ungültigen Wert in der Antwort sendet, damit umgehen kann, anstatt direkt abzustürzen? Einer der Wege und mein persönlicher Favorit:
Da ich einen Artikel zur Implementierung eines Validators für das Anmeldeformular in RxSwift geschrieben habe, habe ich mich entschieden, einen für die gleiche Idee mit dem Apple Combine-Framework zu schreiben. Fast alle mobilen Apps erfordern ein Anmeldeformular und Sie müssen die Benutzeranmeldeinformationen validieren, bevor Sie mit dem Anmeldevorgang fortfahren.
Wie oft haben Sie ohne nachzudenken eine Plastikflasche, ein Glas, eine Aluminiumdose oder ein Öko-Energiepaket weggeworfen? Wie oft haben Sie sich gewünscht, dass Sie für das Recycling etwas zurückbekommen könnten? Wenn Sie wie die meisten Menschen sind, lautet die Antwort wahrscheinlich „vielfach“. Recycling wird oft als Ärger, lästige Pflicht oder Pflicht angesehen, die keinen unmittelbaren oder greifbaren Nutzen bringt.
Es war nach Mitternacht, als Hayden Katie nach ihrem gemeinsamen Abend zurück in ihren Studentenwohnheim fuhr. Sie hatte morgens einen frühen Unterricht und hatte keine Kleidung mehr zum Wechseln, nachdem sie die Nacht zuvor bei ihm übernachtet hatte.
Offenes Tagebuch: Ein Bild pro Tag. Geschichten haben mich schon immer fasziniert.
Gestern haben wir die Tür zum diesjährigen Eurovision Song Contest mit einem glitzernden, chaotischen großen Finale geschlossen, bei dem die schwedische Sängerin Loreen die Trophäe mit nach Hause nahm. Sie war damit die erste Frau, die zweimal gewann, und holte die Krone 50 Jahre nach dem Gewinn des Wettbewerbs durch ABBA zurück nach Schweden mit „Waterloo“. Sie entwickelten sich zu einem der größten Acts im Kanon der Popmusik.