Magento 2 Zertifizierung - Wissenswertes und ein paar TippsChristian Münch
Slides der Abendveranstaltung für Entwickler im Rahmen der Büroeröffnung des netz98 Standort Hamburg.
Die Folien enthalten Informationen über das Examen und Ressourcen für die Vorbereitung.
Entwurfsmuster sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme in der Softwareentwicklung. Diese Entwurfsmuster können auch in ABAP eingesetzt werden.
In diesem Webinar haben wir einen Einblick in die Entwurfsmuster gegeben und anhand von 3 Praxisbeispielen deren Anwendung in ABAP veranschaulicht.
Magento 2 Zertifizierung - Wissenswertes und ein paar TippsChristian Münch
Slides der Abendveranstaltung für Entwickler im Rahmen der Büroeröffnung des netz98 Standort Hamburg.
Die Folien enthalten Informationen über das Examen und Ressourcen für die Vorbereitung.
Entwurfsmuster sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme in der Softwareentwicklung. Diese Entwurfsmuster können auch in ABAP eingesetzt werden.
In diesem Webinar haben wir einen Einblick in die Entwurfsmuster gegeben und anhand von 3 Praxisbeispielen deren Anwendung in ABAP veranschaulicht.
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...Agile Austria Conference
Warum Softwarearchitektur und Führungskultur enger miteinander verknüpft sind, als man zunächst vermuten möchte und welche Handlungsempfehlungen sich daraus ableiten lassen.
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
In dieser Präsentation möchte ich ein paar Tricks und Tipps bei der Entwicklung von Erweiterungen weitergeben, die ich über die Jahre gesammelt habe.
Themen, die behandelt werden:
- Joomla! API / vorhandene Funktionen nutzen
- Entwicklungsumgebung (IDE / Lokale Serverumgebung)
- Workflow bei der Entwicklung (Prozess zur finalen Version)
- Optimierungspotentiale (Phing, Code Sniffer, Update-Strategie)
- Feedback / Diskussion / Kritik
Über den Autor:
Viktor arbeitet seit Joomla! 1.0 (2005) mit dem Content Management System und ist Entwickler von über 30 Erweiterungen, die er der Joomla! Community kostenlos zur Verfügung stellt. Er engagiert sich im JandBeyond e.V. und CMS Garden. Studiert hat er Informatik am KIT, beruflich ist er als Joomla! Spezialist bei 1&1 Internet AG angestellt und nebenbei auch als freiberuflicher Webentwickler tätig.
When discussing about build systems, still Ant and Maven are the most prominent. This presentation is from a talk about characteristics of Ant and Maven, how they compare and if its worth migrating between both.
Slides are in German, but IT topics tend to be understandable even by non native speakers.
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
Mit den stetig wachsenden Möglichkeiten, die Cross-Platform-Anwendungen bieten, wachsen auch die Anforderungen an deren Design. Skalierbarkeit, Flexibilität und Wandelbarkeit gehören zu den Grundprinzipien eines modernen User-Interfaces. Andreas Wissel und Christian Liebel erarbeiten mit Ihnen in diesem Workshop anhand von Praxisbeispielen einen robusten Workflow. Mit Storybook und Angular lassen sich so isolierte, test- und wartbare Komponenten im Handumdrehen umsetzen. Ihre Designer und Entwickler werden es lieben.
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Virtual Forge
Markus Theilen, bei EWE als IT-Koordinator zuständig für die Entwicklungskoordination, berichtet über seine Erfahrung und Vorgehensweise bei der Einführung von Virtual Forge CodeProfiler in der Anwendungsentwicklung von easy+
easy+ ist eine Eigenentwicklung von EWE auf Basis von SAP ERP 6.0, die die Komponenten Ablesung, Abrechnung, Fakturierung und Forderungsmanagement, Marktkommunikation und Reporting/Controlling für Energiedienstleistungen des EWE-Konzerns umfasst.
Video ist die Trafficquelle der Zukunft. Schon jetzt ist es extrem lukrativ seine Video gut in den Videoportalen und in den Suchmaschinen zu platzieren.
In dieser Präsentation auf dem Barcamp Bodensee zeige ich ein paar Beispiele, wie ich Video SEO erfolgreich durchführe.
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...Agile Austria Conference
Warum Softwarearchitektur und Führungskultur enger miteinander verknüpft sind, als man zunächst vermuten möchte und welche Handlungsempfehlungen sich daraus ableiten lassen.
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
In dieser Präsentation möchte ich ein paar Tricks und Tipps bei der Entwicklung von Erweiterungen weitergeben, die ich über die Jahre gesammelt habe.
Themen, die behandelt werden:
- Joomla! API / vorhandene Funktionen nutzen
- Entwicklungsumgebung (IDE / Lokale Serverumgebung)
- Workflow bei der Entwicklung (Prozess zur finalen Version)
- Optimierungspotentiale (Phing, Code Sniffer, Update-Strategie)
- Feedback / Diskussion / Kritik
Über den Autor:
Viktor arbeitet seit Joomla! 1.0 (2005) mit dem Content Management System und ist Entwickler von über 30 Erweiterungen, die er der Joomla! Community kostenlos zur Verfügung stellt. Er engagiert sich im JandBeyond e.V. und CMS Garden. Studiert hat er Informatik am KIT, beruflich ist er als Joomla! Spezialist bei 1&1 Internet AG angestellt und nebenbei auch als freiberuflicher Webentwickler tätig.
When discussing about build systems, still Ant and Maven are the most prominent. This presentation is from a talk about characteristics of Ant and Maven, how they compare and if its worth migrating between both.
Slides are in German, but IT topics tend to be understandable even by non native speakers.
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
Mit den stetig wachsenden Möglichkeiten, die Cross-Platform-Anwendungen bieten, wachsen auch die Anforderungen an deren Design. Skalierbarkeit, Flexibilität und Wandelbarkeit gehören zu den Grundprinzipien eines modernen User-Interfaces. Andreas Wissel und Christian Liebel erarbeiten mit Ihnen in diesem Workshop anhand von Praxisbeispielen einen robusten Workflow. Mit Storybook und Angular lassen sich so isolierte, test- und wartbare Komponenten im Handumdrehen umsetzen. Ihre Designer und Entwickler werden es lieben.
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Virtual Forge
Markus Theilen, bei EWE als IT-Koordinator zuständig für die Entwicklungskoordination, berichtet über seine Erfahrung und Vorgehensweise bei der Einführung von Virtual Forge CodeProfiler in der Anwendungsentwicklung von easy+
easy+ ist eine Eigenentwicklung von EWE auf Basis von SAP ERP 6.0, die die Komponenten Ablesung, Abrechnung, Fakturierung und Forderungsmanagement, Marktkommunikation und Reporting/Controlling für Energiedienstleistungen des EWE-Konzerns umfasst.
Video ist die Trafficquelle der Zukunft. Schon jetzt ist es extrem lukrativ seine Video gut in den Videoportalen und in den Suchmaschinen zu platzieren.
In dieser Präsentation auf dem Barcamp Bodensee zeige ich ein paar Beispiele, wie ich Video SEO erfolgreich durchführe.
1. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
Code Quality
webconia Technology Conference
Vortrag von: Nico Flemming
2. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
1. Was ist Code Quality und wozu ist das gut?
2. Best practices
3. SOLID principle
4. Ausblick
Inhalt
22.10.2019 1
3. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 2
80% der Lebenszeit einer Software entfällt auf Wartung
• Leichte Wartbarkeit, Änderungen weniger aufwändig
• Unkompliziert
• Gleichbleibende Qualität
• Unabhängig davon, wer den Code geschrieben hat
• Leichte Einarbeitung neuer Entwickler
• Weniger Fehleranfällig
• Erweiterbarkeit
• Skalierbarkeit
• Portierbarkeit
Warum ist Code Quality wichtig?
4. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 3
Guter Sourcecode:
• Spart Zeit (beim Debugging, in der Wartung)
• Spart dadurch Geld
• Spart Nerven (Fehler werden schneller gefunden)
• Ist schön anzusehen
Warum ist Code Quality wichtig?
5. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 4
• Syntaktisch korrekt
• Perfekt strukturiert
• Verständlich kommentiert
• Konsistent
• Sinnolle Namensgebung bei Properties, Methoden, Klassen
• Nutzung von Designpattern
• Vermeidung von Fehlern durch schlechtes Design
Woran erkenne ich guten Code
6. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 5
Best practice: Nomen est Omen
Was ist an dem Namen dieser Konstante problematisch?
7. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 6
Best practice: Nomen est Omen
• Obergrenze oder Untergrenze?
• Max 14?
• Oder 15 erlaubt, aber nicht 16?
• MIN/MAX immer inkl.
8. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 7
Best practice: Konstanten nutzen
Was ist an diesem Ausdruck problematisch?
9. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 8
Best practice: Konstanten nutzen
• Niemand weiß, was „2“ bedeutet
• Konstante spiegelt die Bedeutung wider, nicht den Wert
• Single Source (“2“ kann geändert werden)
10. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 9
Best practice: Konstanten nutzen
Was ist an diesem Beispiel
problematisch?
Wie könnte man es besser
machen?
11. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 10
Best practice: Konstanten nutzen
• Lesbarer (Feldnamen
könnten c1, c2, c3 sein)
• Single Source (Feldnamen
könnten sich ändern)
• Wartbarer
12. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 11
• Spezifikation der Datentypen in Methodensignaturen
• Typensicherheit
• Vermeidung von Typisierungsfehlern
• Ungarische Notation überflüssig (oOrder, iAmount, aShippingMethods)
Best practice: Type Hints
13. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 12
• Spezifikation der Return-Datentypen
• Typensicherheit für Aufrufer
• Vermeidung von Typisierungsfehlern
• Verantwortung für Abfangen von
Fehlern in Klasse durch Exceptions
• Entweder Klasse liefert Page zurück
• Oder wirft eine Exception
Best practice: Explicit Return Types
14. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 13
• Was ist Codestyle
• Lesbarkeit und Wartbarkeit
• Maximierung von Verständlichkeit und Wartbarkeit von Sourcecode
• Codestrukturen sehen einheitlich aus
• Codestrukturen sehen ordentlich aus
• Zurechtfinden auch in fremden Sourcecode
Best practice: Warum Codestyle
15. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 14
Best practice: Keep it simple
• Hohe zyklomatische Komplexität
• Tiefe Verschachtelung
• Redunante action (“return null“)
• Unübersichtlich
• Fehleranfällig
16. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 15
Best practice: Keep it simple
Early Exit:
• Nur eine Verschachtelungsebene
• Übersichtlicher
• Nachvollziehbarer
17. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 16
Best practice: Keep it simple
Early Exit:
• Redundanzvermeidung
• Kurz
• Funktion sofort ersichtlich
18. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 17
Bad practice: Auskommentieren von Code
• Unübersichtlich
• Fehlerträchtig
• Relevante Änderungen nur a einkommentierten
Code gemacht
• Jemand könnte Code wieder einkommentieren
• Oft Indikator dafür, das Funktion unklare
logische Fehler verbirgt
• Unnötig
• Git History
• Funktion sofort ersichtlich
19. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 18
Bad practice: Verdächtige Tastaturgeräusche
Tastaturgeräusche über Zeiträume von mehr als 30 Sekunden, die sich
rhythmisch wiederholen
• von Hand erledigt, was durch ein Script erledigt würde
• Verursacher weiß elementares nicht, z.B. wie man in einer IDE mehrere
Zeilen auf einmal auskommentiert
Besser: Script schreiben, Massenfunktionen des Editors nutzen
20. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 19
• Sammlung Prinzipien objektorientierten Designs
• Von Robert C. Martin (Clean Code Bewegung)
• gutes objektorientiertes Design
1. Single Responsibility
2. Open-Closed
3. Liskov Substitution
4. Interface Segregation
5. Dependency Inversion
• Z.b. Bestandteil der Magento2 Development Guidelines
SOLID Principle
21. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 20
• Eine Klasse soll nur eine einzige Verantwortung haben
SOLID: Single Responsibility Prinzip
22. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 21
• Offen für Extensions, geschlossen für Modifications
SOLID: Open - Closed
23. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 22
SOLID: Liskov Substitution Principle
• Parent Klassen durch deren Child
substituierbar
• Programmcode soll weiterhin
funktionieren
• Schema für gute Klassenstrukturen
24. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 23
• Vermeidung zu großer Interfaces
• Entstehen oft im Laufe der Zeit
• Alle Klassen müssen sämtliche Methode implementieren, auch unnötige
• Zu Allgemein
• Interface “CoffeeMachine“ implementiert durch FilterCoffeeMachine
• Methode „Mache Kaffee“
• Ergänzung einer EspressoCoffeeMachine
• Ergänzung Methode „Mache Espresso“ in Interface und Klasse
• Alle CoffeeMachines müssen „Mache Espresso“ implementieren
• Besser neues Interface EspressoMachine welches von CoffeeMachine erbt
SOLID: Interface Segregation Principle
25. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 24
• Kopplungsfreie Klassenmodell
• Implementieren gegen Interfaces statt gegen konkrete
Implementierungen
SOLID: Dependency Inversion Principle
27. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 26
• Lasst uns alle versuchen, guten Sourcecode zu schreiben
• bei Codereview auf Anwendung Design Principles
• Über bestmögliche Variante nachdenken
Ausblick
28. Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 27
Vielen Dank!
Hinweis der Redaktion
Sinnvoll kommentiert, Code never lies
Unlesbar
Abhängig vom Interface – wenn sich Feldnamen ändern muss Sourcecode geändert werden
Fehleranfällig (Reihenfolge)
Nur eine Verantwortung, nicht um mehrere Aufgaben kümmern
Vermeidung von hoher Kopplung zwischen den einzelnen Methoden
Klasse soll erweitert werden können
Core Teil darf in Vererbungen nicht verändert werden
Controller hat wissen über Implementieren (Ausgabemedium File)
Anderer Logger htte zum Beispiel Methde „writeToDatabase“
Logger nicht austauschbar ihne Controller zu ändern