Robert C. Martin hat den Begriff „Clean Code“ in seinem gleichnamigen Buch für die Software Entwicklung geprägt. Doch was ist sauberer Code und was hat dieser mit der Wartbarkeit von Software zu tun? Im Vortrag wird an vielen Beispielen praxisnah dargestellt, wie bereits kleine Verbesserungen der „Code Sauberkeit“ sehr positive Auswirkungen auf die Wartbarkeit von Software haben können. Anhand von Beispielen aus über 15 Jahren Projekterfahrung schauen wir uns die Abgründe der Software Entwicklung an. Wir lernen Techniken kennen, die Du noch heute in Deinem Code einsetzen kannst, um der Wartungshölle zu entgehen. Spoiler Alarm: Viele Beispiele sind erst zum Lachen und dann zum Weinen :)
Robert C. Martin hat den Begriff „Clean Code“ in seinem gleichnamigen Buch für die Software Entwicklung geprägt. Doch was ist sauberer Code und was hat dieser mit der Wartbarkeit von Software zu tun? Im Vortrag wird an vielen Beispielen praxisnah dargestellt, wie bereits kleine Verbesserungen der „Code Sauberkeit“ sehr positive Auswirkungen auf die Wartbarkeit Ihrer Software haben können. Anhand von Beispielen aus über 15 Jahren Projekterfahrung lernen Sie Techniken kennen, die Sie noch heute in Ihrem Code einsetzen können.
Dream-Team: Roslyn & Visual Studio ExtensionsRobin Sedlaczek
Slides from my talk about the dream team Roslyn & Visual Studio Extensions. It's more a live-coding session than a talk, where I show a lot of examples combining the power of Roslyn (the Microsoft .NET Compiler Platform) and Visual Studio Extensions. This dream team can improve your code quality and security, increase your developer productivity or improve/support the development process as well as the application lifecycle management of your project.
And that is only the peak of the iceberg. At the end, this talk should open up your minds and unleash your creativity to create great ideas that help your team and your project.
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
Slides from my talk about direct coding in the own application using C# Scripting. Try and us your applications domain models and services in C# Scripts to empower development within an application. Or give your users the possibility to automate and extend your application with scripting.
Meine Slides für den ganzjährigen Workshop zu Zend\Expressive auf der International PHP Conference 2017 Spring Edition. Die Slides bilden die Grundlagen für den Workshop.
17 years after Fieldings paper REST is at its peak. Every interface has to use REST. But there are many problems in using and designing REST APIs. This sessions describes the problems and encourages to use besides REST other means of communication.
Robert C. Martin hat den Begriff „Clean Code“ in seinem gleichnamigen Buch für die Software Entwicklung geprägt. Doch was ist sauberer Code und was hat dieser mit der Wartbarkeit von Software zu tun? Im Vortrag wird an vielen Beispielen praxisnah dargestellt, wie bereits kleine Verbesserungen der „Code Sauberkeit“ sehr positive Auswirkungen auf die Wartbarkeit Ihrer Software haben können. Anhand von Beispielen aus über 15 Jahren Projekterfahrung lernen Sie Techniken kennen, die Sie noch heute in Ihrem Code einsetzen können.
Dream-Team: Roslyn & Visual Studio ExtensionsRobin Sedlaczek
Slides from my talk about the dream team Roslyn & Visual Studio Extensions. It's more a live-coding session than a talk, where I show a lot of examples combining the power of Roslyn (the Microsoft .NET Compiler Platform) and Visual Studio Extensions. This dream team can improve your code quality and security, increase your developer productivity or improve/support the development process as well as the application lifecycle management of your project.
And that is only the peak of the iceberg. At the end, this talk should open up your minds and unleash your creativity to create great ideas that help your team and your project.
BASTA! Spring 2017 - Warum warten auf die IDE? Direct Coding in der eigenen A...Robin Sedlaczek
Slides from my talk about direct coding in the own application using C# Scripting. Try and us your applications domain models and services in C# Scripts to empower development within an application. Or give your users the possibility to automate and extend your application with scripting.
Meine Slides für den ganzjährigen Workshop zu Zend\Expressive auf der International PHP Conference 2017 Spring Edition. Die Slides bilden die Grundlagen für den Workshop.
17 years after Fieldings paper REST is at its peak. Every interface has to use REST. But there are many problems in using and designing REST APIs. This sessions describes the problems and encourages to use besides REST other means of communication.
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)NETWAYS
Neben vielen Vorteilen von Icinga 2 gegenüber seinem Nachfolger, bietet die Lösung eine integrierte Schnittstelle zur Open Source Graphing Lösung Graphite. Dadurch wird nicht nur die I/O Last vom System reduziert, sondern erlaubt sogar Real-Time-Graphing.
Webinare
Archiv Link: https://www.netways.de/webinare/archiv/icinga_webinare/icinga_2_integration_von_graphite/
Aktuell: https://www.netways.de/webinare/webinare_aktuell/
NETWAYS
Konferenzen: https://www.netways.de/events_schulungen/home/
Schulungen: https://www.netways.de/events_schulungen/schulungen/home/
Shop: https://shop.netways.de/
Blog: http://blog.netways.de/
Social Media
YouTube: https://www.youtube.com/channel/UC8nIBEFmjzXjXeJV_hkkeIQ
Facebook: https://www.facebook.com/netways
Google+: https://plus.google.com/+netways/
Twitter: https://twitter.com/netways
W-JAX 2013 Spring Batch - Performance und Skalierbarkeittobiasflohre
Slides to our (Dennis Schulte and me) talk at the German Java conference W-JAX 2013 in Munich. Subject is the batch processing framework Spring Batch, general hints regarding performance in batch applications and scalability options in Spring Batch. Slides are in German.
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
Slides from my talks at the BASTA! Conference 2016 in Mainz. It's about the Microsoft .NET Compiler Platform (Roslyn), Visual Studio Extensions and increasing productivity when combining them.
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!Robin Sedlaczek
Slides from my talk about the perfect app model at the GUI & DESIGN 2017 conference. It's about multi-modal conversational user interfaces (CUI) to build UIs for every device with ease and one code base! Never exclude any user groups again. Using the Microsoft Bot Framework, Cognitive Services and AdaptiveCards. But we talk about Google Go and Alexa app models as well.
REST APIs liegen im Trend und werden daher in vielen Projekten eingesetzt. REST besitzt Schwächen, die bei falschem Einsatz schnell sichtbar werden. Dieser Vortrag zeigt die Probleme und Schächen von REST und beschreibt die Alternativen: GraphQL, JSON Path und GRPC.
Slides from my presentation about application architectures for .NET Core applications. It covers desktop application, web applications, mobile applications as well as container-based applications. It's a roundup of the Microsoft Architecture Guides.
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellRobin Sedlaczek
Slides from my talk about the perfect app model: bots at the Magdeburger Developer Days 2018. All about bots on different channels and as skills for voice assistants. Introduction.
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichVerein FM Konferenz
Es geht um die Entwicklung und Parametrisierung, Mehrfachnutzung und Transportierbarkeit von Funktionen, wie Skripten, Navigationselementen, PopOvers etc..
Das Abstraktions-Niveau ist hier deutlich niedriger gewählt als bei den Extrem-Programmierern der FileMaker-Szene.
Auch hier liegt der Schwerpunkt auf Nachvollziehbarkeit und Pflege.
Das Konzept hat Überschneidungen/Gemeinsamkeiten mit FM-Modular
- Begriffsdfefinition
- Verschiedene Typen von FrameWorks
- Notwendigkeit
- Aufbau, Vorgehensweise, Pflege
- Vor- und Nachteile
- Anwendungsbeispiele
- DEMO
- Diskussion /Fragen
Developing Oracle Application Express on a high level you have to think about topics like issue tracking, continious delivery, automation, team management. The presentation was hold at the APEX Roadshow on 21.st of january 2014 in german language.
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
Slides from my talk about early feedback during development time, flexibility for customers and security as a Must-have. It's nothing about management - it's all about C# Script and practical use.
My slides from the Advanced Developers Conference 2017 (ADC Core) in Cologne! It's about C# scripting and how you can use it in your application. Benefits for developers and customers.
Vom Framework zur App - Ein Blick in das React-ÖkosystemPeter Hecker
React nennt sich selber "Eine JavaScript-Bibliothek zur Erstellung von Benutzeroberflächen" und tatsächlich, mit React alleine "baut" man keine App.
Das React-Ökosystem ist reichhaltig und entwickelt sich ständig weiter. Die Werkzeuge und Techniken zur Erstellung von React-Apps werden Tag für Tag besser. In diesem Vortrag werfen wir einen Blick auf das React-Ökosystem und was man denn alles so braucht sowie nutzen kann, um State-of-the-Art Frontend-Apps zu entwickeln.
FileMaker Skripten akzeptieren nur einen einzigen Parameter, den man innerhalb des Skriptes mit der Funktion 'Get(ScriptParameter)' auslesen kann. Seit der Einführung des Skript-Parameters in FileMaker 7 haben Entwickler nach Wegen gesucht, die Beschränkung auf einen einzigen Parameter zu umgehen. In den meisten Programmiersprachen akzeptieren Funktionen eine beliebige Anzahl von Parametern. Wenn man einen Weg findet, in den einzigen Parameter eines FileMaker Skriptes mehrere Parameter zu verpacken, kombiniert man das Konzept des "FileMaker Skriptes" mit dem Konzept der "Funktion". Aus dieser Verbindung ist in der englischsprachigen FileMaker-Community der Begriff "Function Scripting" entstanden. Dieser Vortrag gibt einen Überblick über einige Vorgehensweisen, wie man mehrere Parameter an ein Skript übergeben kann. Wir beginnen mit einfacheren Methoden, die auch für Entwickler mit wenig Erfahrung geeignet sind, und tasten uns danach an fortgeschrittene Techniken heran. Fortgeschrittene Techniken bedeuten mehr Aufwand und Komplexität, bieten aber mehr Kontrolle.
Download Beispieldateien:
http://www.filemaker-konferenz.com/2014/downloads/Hirt_Thomas/Function_Scriptung_und_Custom_Functions.zip
Das sind die Folien zu unserem Webinar vom 29.5.2020 zum Thema: SAP/ABAP und Microsoft
Unter Anderem wurden folgende Themen behandelt:
- ABAP2XSLX
- ABAP SDK for Azure
- Microsoft Graph API (aus ABAP!)
Logstash: Open Source Log-Management (Webinar vom 20.02.2014)NETWAYS
Mit Logstash erhält man eine sehr gute Open Source Lösung, wenn es um das archivieren und sammeln von Logfiles geht. Nicht nur Syslog oder klassische Logfiles können abgegriffen werden, sondern auch das Windows Event-Log oder SNMP-Traps. Diese können anschließend in einem intuitiven Webinterface gefiltert und ausgewertet werden.
Webinare
Archiv Link: https://www.netways.de/webinare/archiv/logstash_webinare/logstash_open_source_log_management/
Aktuell: https://www.netways.de/webinare/webinare_aktuell/
NETWAYS
Konferenzen: https://www.netways.de/events_schulungen/home/
Schulungen: https://www.netways.de/events_schulungen/schulungen/home/
Shop: https://shop.netways.de/
Blog: http://blog.netways.de/
Social Media
YouTube: https://www.youtube.com/channel/UC8nIBEFmjzXjXeJV_hkkeIQ
Facebook: https://www.facebook.com/netways
Google+: https://plus.google.com/+netways/
Twitter: https://twitter.com/netways
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenRobin Sedlaczek
Slides from my workshop about software architectures for .NET Core applications at BASTA! Spring 2018 conference. We talk about architectures for enterprise mobile apps with Xamarin.Forms and ASP.NET Web Apps. Then we went hands-on and developed a CRM system called BASTAdynamics. :) One #microservice per desk, #containerized with #Docker, published to #Azure registry, deployed as Azure web apps. We have #aspnet #angular, #razor, #UWP & #Xamarin.Forms clients. #IdentityServer & @AzureCosmosDB in the backend. AND: We had a lot of fun! :)
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)NETWAYS
Neben vielen Vorteilen von Icinga 2 gegenüber seinem Nachfolger, bietet die Lösung eine integrierte Schnittstelle zur Open Source Graphing Lösung Graphite. Dadurch wird nicht nur die I/O Last vom System reduziert, sondern erlaubt sogar Real-Time-Graphing.
Webinare
Archiv Link: https://www.netways.de/webinare/archiv/icinga_webinare/icinga_2_integration_von_graphite/
Aktuell: https://www.netways.de/webinare/webinare_aktuell/
NETWAYS
Konferenzen: https://www.netways.de/events_schulungen/home/
Schulungen: https://www.netways.de/events_schulungen/schulungen/home/
Shop: https://shop.netways.de/
Blog: http://blog.netways.de/
Social Media
YouTube: https://www.youtube.com/channel/UC8nIBEFmjzXjXeJV_hkkeIQ
Facebook: https://www.facebook.com/netways
Google+: https://plus.google.com/+netways/
Twitter: https://twitter.com/netways
W-JAX 2013 Spring Batch - Performance und Skalierbarkeittobiasflohre
Slides to our (Dennis Schulte and me) talk at the German Java conference W-JAX 2013 in Munich. Subject is the batch processing framework Spring Batch, general hints regarding performance in batch applications and scalability options in Spring Batch. Slides are in German.
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
Slides from my talks at the BASTA! Conference 2016 in Mainz. It's about the Microsoft .NET Compiler Platform (Roslyn), Visual Studio Extensions and increasing productivity when combining them.
GUI & DESIGN 2017 - Das perfekte Anwendungsmodell. UIs für jedes Device!Robin Sedlaczek
Slides from my talk about the perfect app model at the GUI & DESIGN 2017 conference. It's about multi-modal conversational user interfaces (CUI) to build UIs for every device with ease and one code base! Never exclude any user groups again. Using the Microsoft Bot Framework, Cognitive Services and AdaptiveCards. But we talk about Google Go and Alexa app models as well.
REST APIs liegen im Trend und werden daher in vielen Projekten eingesetzt. REST besitzt Schwächen, die bei falschem Einsatz schnell sichtbar werden. Dieser Vortrag zeigt die Probleme und Schächen von REST und beschreibt die Alternativen: GraphQL, JSON Path und GRPC.
Slides from my presentation about application architectures for .NET Core applications. It covers desktop application, web applications, mobile applications as well as container-based applications. It's a roundup of the Microsoft Architecture Guides.
Magdeburger Developer Days 2018 - Das perfekte AnwendungsmodellRobin Sedlaczek
Slides from my talk about the perfect app model: bots at the Magdeburger Developer Days 2018. All about bots on different channels and as skills for voice assistants. Introduction.
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichVerein FM Konferenz
Es geht um die Entwicklung und Parametrisierung, Mehrfachnutzung und Transportierbarkeit von Funktionen, wie Skripten, Navigationselementen, PopOvers etc..
Das Abstraktions-Niveau ist hier deutlich niedriger gewählt als bei den Extrem-Programmierern der FileMaker-Szene.
Auch hier liegt der Schwerpunkt auf Nachvollziehbarkeit und Pflege.
Das Konzept hat Überschneidungen/Gemeinsamkeiten mit FM-Modular
- Begriffsdfefinition
- Verschiedene Typen von FrameWorks
- Notwendigkeit
- Aufbau, Vorgehensweise, Pflege
- Vor- und Nachteile
- Anwendungsbeispiele
- DEMO
- Diskussion /Fragen
Developing Oracle Application Express on a high level you have to think about topics like issue tracking, continious delivery, automation, team management. The presentation was hold at the APEX Roadshow on 21.st of january 2014 in german language.
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
Slides from my talk about early feedback during development time, flexibility for customers and security as a Must-have. It's nothing about management - it's all about C# Script and practical use.
My slides from the Advanced Developers Conference 2017 (ADC Core) in Cologne! It's about C# scripting and how you can use it in your application. Benefits for developers and customers.
Vom Framework zur App - Ein Blick in das React-ÖkosystemPeter Hecker
React nennt sich selber "Eine JavaScript-Bibliothek zur Erstellung von Benutzeroberflächen" und tatsächlich, mit React alleine "baut" man keine App.
Das React-Ökosystem ist reichhaltig und entwickelt sich ständig weiter. Die Werkzeuge und Techniken zur Erstellung von React-Apps werden Tag für Tag besser. In diesem Vortrag werfen wir einen Blick auf das React-Ökosystem und was man denn alles so braucht sowie nutzen kann, um State-of-the-Art Frontend-Apps zu entwickeln.
FileMaker Skripten akzeptieren nur einen einzigen Parameter, den man innerhalb des Skriptes mit der Funktion 'Get(ScriptParameter)' auslesen kann. Seit der Einführung des Skript-Parameters in FileMaker 7 haben Entwickler nach Wegen gesucht, die Beschränkung auf einen einzigen Parameter zu umgehen. In den meisten Programmiersprachen akzeptieren Funktionen eine beliebige Anzahl von Parametern. Wenn man einen Weg findet, in den einzigen Parameter eines FileMaker Skriptes mehrere Parameter zu verpacken, kombiniert man das Konzept des "FileMaker Skriptes" mit dem Konzept der "Funktion". Aus dieser Verbindung ist in der englischsprachigen FileMaker-Community der Begriff "Function Scripting" entstanden. Dieser Vortrag gibt einen Überblick über einige Vorgehensweisen, wie man mehrere Parameter an ein Skript übergeben kann. Wir beginnen mit einfacheren Methoden, die auch für Entwickler mit wenig Erfahrung geeignet sind, und tasten uns danach an fortgeschrittene Techniken heran. Fortgeschrittene Techniken bedeuten mehr Aufwand und Komplexität, bieten aber mehr Kontrolle.
Download Beispieldateien:
http://www.filemaker-konferenz.com/2014/downloads/Hirt_Thomas/Function_Scriptung_und_Custom_Functions.zip
Das sind die Folien zu unserem Webinar vom 29.5.2020 zum Thema: SAP/ABAP und Microsoft
Unter Anderem wurden folgende Themen behandelt:
- ABAP2XSLX
- ABAP SDK for Azure
- Microsoft Graph API (aus ABAP!)
Logstash: Open Source Log-Management (Webinar vom 20.02.2014)NETWAYS
Mit Logstash erhält man eine sehr gute Open Source Lösung, wenn es um das archivieren und sammeln von Logfiles geht. Nicht nur Syslog oder klassische Logfiles können abgegriffen werden, sondern auch das Windows Event-Log oder SNMP-Traps. Diese können anschließend in einem intuitiven Webinterface gefiltert und ausgewertet werden.
Webinare
Archiv Link: https://www.netways.de/webinare/archiv/logstash_webinare/logstash_open_source_log_management/
Aktuell: https://www.netways.de/webinare/webinare_aktuell/
NETWAYS
Konferenzen: https://www.netways.de/events_schulungen/home/
Schulungen: https://www.netways.de/events_schulungen/schulungen/home/
Shop: https://shop.netways.de/
Blog: http://blog.netways.de/
Social Media
YouTube: https://www.youtube.com/channel/UC8nIBEFmjzXjXeJV_hkkeIQ
Facebook: https://www.facebook.com/netways
Google+: https://plus.google.com/+netways/
Twitter: https://twitter.com/netways
BASTA! Spring 2018 - Architekturen für .NET Core-AnwendungenRobin Sedlaczek
Slides from my workshop about software architectures for .NET Core applications at BASTA! Spring 2018 conference. We talk about architectures for enterprise mobile apps with Xamarin.Forms and ASP.NET Web Apps. Then we went hands-on and developed a CRM system called BASTAdynamics. :) One #microservice per desk, #containerized with #Docker, published to #Azure registry, deployed as Azure web apps. We have #aspnet #angular, #razor, #UWP & #Xamarin.Forms clients. #IdentityServer & @AzureCosmosDB in the backend. AND: We had a lot of fun! :)
11. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
MicroStream is a
completely new written Serialization for
Java
Download free:
www.microstream.one
Free support:
MicroStream Community Forum
www.microstream.one
Twitter: @microstreamOne
MicroStream - Java Native Data Store
Create ultra-fast In-Memory Database Applications.
12. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Agenda
▪Warum Clean Code?
▪3 Stufen von Clean Code
▪Code Smells
▪Beispiele aus über 15 Jahren Kampf um / mit Clean Code
14. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Kostenverteilung im Software Lebenszyklus
Quelle: Schach, S. R., 1999. Software Engineering. Fourth Edition Hrsg. Boston: McGraw-Hill
Glass, R. L., 2001. Frequently Forgotten Fundamental Facts about Software Engineering. IEEE Software, Issue May/June, pp. 110-112.
7%
6%
12%
8%
40%
16%
11%
67%
SOFTWARE LIFECYCLE
Requirements Engineering Design Programming
Integration Enhancements Migration
Bug Fixes
15. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Entwicklung und Wartung
0%
100%
200%
Entwicklung Wartung
Code schreiben Code lesen
Quelle: Parikh, G. & Zvegintzov, N., 1983. Tutorial on software maintenance. s.l.:IEEE Computer Society Press.
16. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Kostenverteilung im Software Lebenszyklus
Quelle: Schach, S. R., 1999. Software Engineering. Fourth Edition Hrsg. Boston: McGraw-Hill
Glass, R. L., 2001. Frequently Forgotten Fundamental Facts about Software Engineering. IEEE Software, Issue May/June, pp. 110-112.
0% 20% 40% 60% 80% 100%
Gesamt
Wartung
Code Verstehen
23. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
make or buy?
Make Buy / Use
Code Qualität
Tests
Dokumentation
Preis / Leistung
Spezialisierung
25. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Copy & Paste vs. Reuse
▪DRY (Don‘t Repeat Yourself)
▪“three strikes and you refactor”
Original Copy 1 Copy 2
Quelle: Martin Fowler , Kent Beck , John Brant: Refactoring: Improving the Design of Existing Code
27. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Design Pattern / Entwurfsmuster
bewährte Lösungsschablonen für wiederkehrende
Entwurfsprobleme
Ein gutes Muster sollte
▪ ein oder mehrere Probleme lösen,
▪ ein erprobtes Konzept bieten,
▪ auf realen Designs basieren
Quelle: http://de.wikipedia.org/wiki/Entwurfsmuster
30. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Was ist sauberer Code?
▪Code ohne Compiler-Fehler?
▪Code ohne Warnings?
▪Code nach bestimmter Formatierung?
Definitionssache!?
31. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Was ist nicht sauberer Code?
„Unter Code-Smell versteht man in der
Programmierung ein Konstrukt, das eine
Überarbeitung des Programm-Quelltextes
nahelegt.“
Quelle: Martin, Robert C. (2009). "17: Smells and Heuristics". Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall. ISBN 978-0-13-235088-4.
32. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Code Smells
▪Überholte Kommentare
▪Auskommentierter Code
▪Tote Funktionen / Code
▪Funktionen mit vielen Parametern
▪Funktionen mit Flag-Parameter
▪Magic-Numbers
▪…
37. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Zero Warning Policy
▪Warnings weisen auf Probleme hin
▪Nicht alle Warnings sind immer ein Problem
▪Warnings lassen sich konfigurieren
▪Nur noch relevante Warnings anzeigen lassen
38. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Kosten von Änderungen / Bugs
0
20
40
60
80
100
120
Requirements Design Code Test Production
hoursofwork
Phase detected
45. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Sag doch gleich was du willst …
if( isGetter(method) || isBooleanGetter(method) ) {
// [MY_CODE]
}
47. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Was ist mit altem Code (auskommentiert)?
▪Reduziert Übersichtlichkeit
▪Trügerische Sicherheit
▪ Es fehlen die Infos dazu
▪ Das Sourcecode Versionssystem hilft
▪Raus damit!
48. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Code Konventionen: Struktur
▪Code Formatter verwenden
▪ Zeichenlimit pro Zeile
▪ Leerzeilen / Leerzeichen
▪ Position von Klammern / Geschweiften Klammern
49. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Code Konventionen: Struktur
▪Bei if, else, for, while, IMMER geschweifte Klammern
schreiben
if(isValid())
save();
if(isValid())
save();
close();
if(isValid())
save();
close();
if(isValid()){
save();
close();
}
50. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Code Konventionen: Struktur
▪Else Block immer schreiben oder nicht?
if(isValid()){
save();
close();
}
if(isValid()){
save();
close();
} else {
// Nix zu tun :)
}
52. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Speicher tauschen
/*
* swap left and right
* elements for whole array
*/
for( i = 0; i < MAX_ELEMENTS; i++)
leftElement = left [ i ];
left[ i ] = right [ i ];
right [ i ] = leftElement;
53. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Rechenstunde
x = 3+4 * 2+7 = 63
x = (3+4) * (2+7) = 63
x = 3+ 4*2 +7 = 18
x = 3+ (4*2) +7 = 18
54. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Code Konventionen: Style
vusing adjhungarian nnotation vmakes nreading
ncode adjdifficult
▪Ungarische Notation mit Vorsicht genießen
▪ Insbesondere bei Sprachen mit statischer Typisierung
▪ Interfaces nicht mit einem vorangestellten "I" markieren
55. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Kommentare
Quelle: http://stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered
// When I wrote this, only God and I understood
// what I was doing
// Now, God only knows
56. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Kommentare
▪Vorgehen kommentieren (Warum? und nicht Wie!)
// gibt 1 zurück
return 1;
[…]
i++; // i um eins erhöhen
57. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
if(person.age() >= 18){
[. . .]
// prüfen ob Person schon 18 ist
if(person.age() >= 18){
[. . .]
Kommentare
▪Vorgehen kommentieren (Warum? und nicht Wie!)
// Volljährigkeit prüfen
if(person.age() >= 18){
[. . .]
if(person.age() >= LEGAL_AGE){
[. . .]
if(person.age() >= country.getLegalAge()){
[. . .]
if(person.age() >=
country.getLegalAgeInYears()){
[. . .]
59. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Quelle: http://stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered
/**
* Dear maintainer:
*
* Once you are done trying to 'optimize' this routine,
* and have realized what a terrible mistake that was,
* please increment the following counter as a warning
* to the next guy:
*
* total_hours_wasted_here = 42
*/
60. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Fehlermeldungen
ArrayIndexOutOfBoundsException:
Array index out of range
ArrayIndexOutOfBoundsException:
Array index 15 out of range
ArrayIndexOutOfBoundsException:
Array index 15 out of range [0:9]
62. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Quelle: Capers Jones, Chief Scientist Emeritus: Software Quality in 2002: A Survey of the State of the Art. Software Productivity Research an Artemis company
63. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Quelle: Capers Jones, Chief Scientist Emeritus: Software Quality in 2002: A Survey of the State of the Art. Software Productivity Research an Artemis company
68. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Review Benefits
▪Zone of Chaos vermeiden
▪Personalentwicklung
▪Verbesserung der Codebasis
▪Weniger Stress, mehr Haare am Kopf, mehr von der Rente ☺
72. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
Links
▪https://dev.to/bosepchuk/the-one-chart-every-developer-must-
understand-2db9
73. RICHARD FICHTNER
@RichardFichtner | r.fichtner@xdev-software.de
picture credits
All pictures in this presentation originate from pixabay.
This is a human-readable summary of the Pixabay License (read the full text).
You can use all images and videos published on Pixabay for free (except as set out below). You may
use them for commercial and non-commercial purposes, in altered and unaltered form. You don't
need to ask permission from or provide credit to the image author or Pixabay, although it is
appreciated when possible.
Cartoons:
▪ https://xkcd.com/1513/
▪ https://xkcd.com/844/