Wie wir mit Code arbeiten

Zweige im Repository

Von Anfang an organisieren wir unsere Repositories so, dass sie den Anforderungen unserer Arbeitsweise mit Code entsprechen. Wir verwenden zwei Hauptzweige (Master und Development) und viele zusätzliche Zweige, die Funktionalitäten und Korrekturen entsprechen. Der Zweig master spiegelt den Produktionscode wider, während development ein Verweis auf die interne Entwicklungsumgebung ist. Für jede neue Funktionalität erstellen wir einen separaten Zweig und verbinden ihn mit einem Backlog-Element. Mit diesem Ansatz können Sie Ihren Fortschritt besser überwachen. Wir verwenden außerdem eine standardisierte Nomenklatur, um die Branchen und ihre Ziele besser zu unterscheiden. Wir frieren wichtige Meilensteine in Form von Tags ein.

Zweige im Repository
479b9b2 Initial commit - aveneo <aveneo@aveneo.pl> 12349fb Add TypeScript - aveneo <aveneo@aveneo.pl> cc7789e Make it work. - aveneo <aveneo@aveneo.pl> b0f3479 Make it right. - aveneo <aveneo@aveneo.pl> 5bc0361 Make it fast. - aveneo <aveneo@aveneo.pl> features/feature-579_add-typescript 95365bc Merge branch features/feature-579_add-typescript - aveneo <aveneo@aveneo.pl> f6c03da Fix it. - aveneo <aveneo@aveneo.pl> bugs/bug-127_loader e4cae17 Merge branch bugs/bug-127_loader - aveneo <aveneo@aveneo.pl> 09b85ea Prepare v1 - aveneo <aveneo@aveneo.pl> development 8e7fe48 Merge branch development - aveneo <aveneo@aveneo.pl> master v1.0.0

Programmierung

Programmierung

Wir lassen unseren Entwicklern die volle Wahlfreiheit hinsichtlich der verwendeten IDE und des Texteditors, da wir gut standardisierte Codeanforderungen haben. Wir befolgen interne Standards hinsichtlich Benennung, Formatierung, Wiederverwendung von Code, Codestruktur, Architektur und Dateiorganisation im Projekt. All dies ermöglicht es uns, einheitlichen, sauberen und effizienten Code zu erstellen. Wir verwenden hauptsächlich zwei Ansätze zum Entwerfen von Lösungen je nach Designanforderungen: FDD (Feature Driven Development) oder TDD (Test Driven Development). Wir konzentrieren uns auch stark auf Designmuster. Abschließend überarbeiten wir den Code und verwenden Linters, um sicherzustellen, dass er optimal bleibt, unseren Standards entspricht und alle Anforderungen der entworfenen Lösung erfüllt.

Visual Studio Logo
Visual Studio
VS Code Logo
VS Code
Visual Studio for mac Logo
Visual Studio for mac
JetBrains Rider Logo
JetBrains Rider
Vim Logo
Vim
Notepad Logo
Notepad

Pull-Requests und Code-Review

Jede Codezeile, die wir zu unseren Hauptzweigen hinzufügen, wird doppelt überprüft. Wir verwenden eine gegenseitige Überprüfung durch Entwickler. Wir überprüfen den Code aus vielen Perspektiven – von Architekturproblemen über Struktur, fehlerhafte Muster, Namens- und Formatierungsprobleme bis hin zu Tippfehlern. Dadurch können wir potenzielle Bedrohungen bereits in der Entwurfsphase erkennen, den Code optimieren und ihn vor der Testphase sicherer machen. Es kommt manchmal vor, dass wir Änderungen rückgängig machen und darüber nachdenken müssen, wie wir das Problem durch Löschen der Pull-Anfrage lösen können. Es ist jedoch besser, dies in der Codeüberprüfungsphase zu tun, als Probleme in der Produktion zu verursachen.

Mehrstufige Verifizierung
Kreuzvalidierung
Alle Kommentare gelöst
Mindestens zwei Gutachter
Pull-Requests und Code-Review

Tests

Der letzte und wichtigste Schritt ist das Testen. Während der Entwicklung durchläuft der Code Unit- und Integrationstests. Dann nutzen wir automatische Tests aus zuvor vorbereiteten Szenarien und manuelle Tests. Wenn alles reibungslos verläuft, sind wir bereit, den Code mit dem Entwicklungszweig zusammenzuführen und einen zweiten Pull-Request an die Produktionsumgebung vorzubereiten, wo der Code aus vielen Zweigen erneut getestet wird.

Einzel
Handbuch
Integrativ
Automatisch
Tests

CI & CD

Für jedes Projekt erstellen wir vollautomatische Mechanismen zur kontinuierlichen Integration und kontinuierlichen Implementierung (unter anderem mithilfe von Azure Pipelines und Azure Artifacts). Seit 2019 implementieren wir alle unsere Lösungen mit Containern, die mit Docker und Kubernetes kompatibel sind.

Sind Sie bereit, über Ihr Projekt zu sprechen?