Was steckt hinter den Hype "Clean Code"? Die meisten denken in erster Linie an Quellcode, jedoch ist es nur ein Teil des Ganzen. Regeln, Konzepte und Richtlinien gehören mit dazu und entscheiden, ob stabile und wartbare Programme entstehen, die zum Unternehmenserfolg oder auch -ruin beitragen.
Zu dem Thema "Clean Code" haben wir am 12.8.2016 ein Webinar abgehalten und das sind die dazugehörigen Folien.
What is the best Healthcare Data Warehouse Model for Your Organization?Health Catalyst
Join Steve Barlow as he addresses the strengths and weaknesses of each of the following three primary Data Model approaches for data warehousing in healthcare:
1. Enterprise Data Model
2. Independent Data Marts
3. Late-binding Solutions
The Ultimate Guide to Creating Visually Appealing ContentNeil Patel
From videos to infographics, I’m constantly leveraging visual media.
Can you guess why?
It’s because these visual content pieces are generating more backlinks than any other form of content I publish, which—in the long run—helps increase my search engine rankings and overall readership numbers.
So, how do you create these visual masterpieces? Well, this infographic should help you.
DB-Security - Sichere und fraglich sichere Techniken | C.HabermuellerChristian Habermueller
IBM Lotus Domino Notes hat ein Hochsicherheitssystem, das auch im Militärischen seinen Einsatz findet. Lernen Sie, wie das Sicherheitssystem von IBM Lotus Domino Notes aufgebaut ist, mit welchen Techniken Sie Daten vor Fremdzugriff schützen können und welche SCHEINBAR sichere Techniken Ihnen KEINERLEI Zugriffsschutz bieten. Sie benötigen nur Notes-Grundkenntnisse, um die Session mit dem bekannten österreichischen "Schmäh" von Herrn Habermüller besuchen zu können.
What is the best Healthcare Data Warehouse Model for Your Organization?Health Catalyst
Join Steve Barlow as he addresses the strengths and weaknesses of each of the following three primary Data Model approaches for data warehousing in healthcare:
1. Enterprise Data Model
2. Independent Data Marts
3. Late-binding Solutions
The Ultimate Guide to Creating Visually Appealing ContentNeil Patel
From videos to infographics, I’m constantly leveraging visual media.
Can you guess why?
It’s because these visual content pieces are generating more backlinks than any other form of content I publish, which—in the long run—helps increase my search engine rankings and overall readership numbers.
So, how do you create these visual masterpieces? Well, this infographic should help you.
DB-Security - Sichere und fraglich sichere Techniken | C.HabermuellerChristian Habermueller
IBM Lotus Domino Notes hat ein Hochsicherheitssystem, das auch im Militärischen seinen Einsatz findet. Lernen Sie, wie das Sicherheitssystem von IBM Lotus Domino Notes aufgebaut ist, mit welchen Techniken Sie Daten vor Fremdzugriff schützen können und welche SCHEINBAR sichere Techniken Ihnen KEINERLEI Zugriffsschutz bieten. Sie benötigen nur Notes-Grundkenntnisse, um die Session mit dem bekannten österreichischen "Schmäh" von Herrn Habermüller besuchen zu können.
What we carry with us in our everyday lives and interactions is just as important for our success as our technical skills and achievements.
This is what I carry with me. What do YOU carry?
Slides designed and produced with Haiku Deck for iPad. Set your story free with Haiku Deck at http://www.haikudeck.com/
You can learn more about Jonathon Colman at http://www.jonathoncolman.org/
Les marques vont elles devenir les premiers médias ?LaNetscouade
Les marques vont-elles devenir les premiers médias ?
A l'occasion de l'événement du CFPJ #CFPJBuzz, retrouvez la présentation du directeur Médias de La Netscouade Ronan Le Goff.
Immuno-Oncology: An Evolving Approach to Cancer Care
Review a downloadable slide deck by Thomas F. Gajewski, MD, PhD, covering the most clinically relevant new data reported from Immuno-Oncology: An Evolving Approach to Cancer Care.
Target Audience
This activity is designed to meet the educational needs of oncologists and other healthcare professionals involved in cancer care.
Format: Microsoft PowerPoint (.ppt) | File size: 26.2 MB | Date posted: 6/20/2012
Slide Deck Disclaimer
This slide deck in its original and unaltered format is for educational purposes and is current as of June 2012. All materials contained herein reflect the views of the faculty, and not those of IMER, the CE provider, or the commercial supporter. These materials may discuss therapeutic products that have not been approved by the US Food and Drug Administration and off-label uses of approved products. Readers should not rely on this information as a substitute for professional medical advice, diagnosis, or treatment. The use of any information provided is solely at your own risk, and readers should verify the prescribing information and all data before treating patients or employing any therapeutic products described in this educational activity.
Usage Rights
This slide deck is provided for educational purposes and individual slides may be used for personal, non-commercial presentations only if the content and references remain unchanged. No part of this slide deck may be published in print or electronically as a promotional or certified educational activity without prior written permission from IMER. Additional terms may apply. See Terms of Service on IMERonline.com for details.
Workplace Accountability: How Effective Managers Create a Culture of OwnershipThe Business LockerRoom
Every company would love for its employees to demonstrate accountability; to take ownership of their work. However, despite their best efforts, few companies understand what it takes to create and sustain a culture of accountability. This presentation will presents the basic components of a methodology for creating workplace accountability.
Was macht Clean Code aus? Wie kann man seinen Code verbessern? Welche Regeln helfen einem Programmierer, um zu sauberen Code zu gelangen? Welche Tipps und Tricks gibt es, mit denen man sich noch verbessern kann? Gibt es Patterns bzw. Muster, die zum Erfolg führen? Oder ist Clean Code nur Zeitverschwendung in Projekten unter Zeitdruck?
Wer das legendäre Buch 'Clean Code' noch nicht gelesen hat, oder eine Auffrischung gebrauchen kann, ist zu diesem Live-Stream gerne willkommen. Um es praxisnah zu halten, werden viele Code-Schnipsel gezeigt, die wir zusammen analysieren und verbessern.
Clean Code - A Handbook of Agile Software Craftsmanship: Englische Ausgabe
https://amzn.to/3pXpCOS
Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code: Deutsche Ausgabe
https://amzn.to/3cNO55B
Diese Videobeschreibung enthält Amazon Affiliate Links, mit denen ihr mich beim Kauf unterstützen könnt, ich erhalte eine kleine Provision während ihr nichts extra zahlt für euren Amazon-Einkauf!
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
Das Dokumentieren einer API wird oft als mühsame, aber wesentliche Aufgabe angesehen. Mit OpenAPI / Swagger können wir eine API-Dokumentation angenehm einfach in ASP.NET Core integrieren. Gregor Biswanger zeigt, wie eine API-Dokumentation mit einer Benutzeroberfläche hinzugefügt wird, mit der wir die API testen können.
Als Nächstes erfahren wir, wie wir Attribute und Konventionen verwenden, um die generierte OpenAPI-Spezifikation zu verbessern. Abschließend wird gezeigt, wie wir mit der Authentifizierung, Versionierung und Anpassung der Benutzeroberfläche umgehen.
In diesem Webinar haben wir das Thema ABAP & Performance behandelt. Im Detail sind wir auf folgende Themen eingegangen:
- Skill
- Detect
- Optimize
Skill: Welche Skills sind notwendig? Wie erlange ich diese Skills? Welche Plattformen, welche Netzwerke sind sinnvoll?
Detect: Welche Tools stehen in einem SAP System zur Verfügung?
Optimize: Welche Möglichkeiten der Performanceoptimierung sind möglich und sinnvoll?
Lernen Sie Teststrategien für Angular- (und generell Web-) Applikationen mit einem Mix aus Theorie und Demos kennen: Von Unit Test über Integration Test mit Jest bis End-to-end Tests mit Selenium.
Demos: https://github.com/florianbader/openspaceplanner
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.
Kontinuierliche Überprüfung der Code-Qualität mit ScrutinizerFATCHIP GmbH
- Herausforderungen beim Code-Qualitätsmanagement
- Was ist Scrutinizer?
- Warum Scrutinizer nutzen?
- Entwicklungsprozess mit Scrutinizer
- Beispiel: FatFramework
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
Slides for my presentation at WebTechCon/IPC 2014.
Visit us at http://www.thecodecampus.de
Folien zu meinem Vortrag bei der WebTechCon/IPC 2014.
AngularJS verspricht, die Entwicklung moderner Single-Page-Webanwendungen radikal zu vereinfachen. Doch kann dieses Versprechen auch bei Anwendungen, die über eine Demoanwendung (To-do-App) hinausgehen, gehalten werden? In diesem Vortrag zeigen wir die Stärken und Schwächen von AngularJS anhand unserer Erfahrungen aus mehreren Projekten und unserer Schulungen. Wie meistert man den Einstieg? Was sind die Gefahren, und wie minimiert man sie? Ist AngularJS bereit für den Einsatz in großen Anwendungen? Wir geben Antworten. Zusätzlich geben wir einen Ausblick auf AngularJS 2.0, wie die bekannten Schwächen dort behoben werden sollen und was an Neuerungen zu erwarten ist.
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Mayflower GmbH
English speaking readers: please click on http://www.slideshare.net/mayflowergmbh/magento-oxid-xtcommerce-evaluation-guide-for-enterprises
Vortrag auf der E-Commerce Conference 2009 in Düsseldorf und Hamburg. Vergleich dreier populärer commercial OS Shopsysteme auf PHP Basis. Welche Kriterien sind für große Unternehmenskunden wichtig im Rahmen einer Evaluation? Der Vortrag beleuchtet u.a. Hintergründe der Herstellerfirmen, Entwicklungskriterien, Community, Performance und Dokumentation.
In modernen Software-Landschaften werden die Fachlichkeiten mit Hilfe von DDD sauber voneinander abgegrenzt und als eigenständige Services umgesetzt.
Was muss in der Entwicklung eines solchen Services beachtet werden, um diese Eigenständigkeit zu gewährleisten und gleichzeitig sicherzustellen, dass alle Services gemeinsam als ein großes Ganzes funktionieren?
Service-Konsumenten sollen Schnittstellen nach Möglichkeit nutzen können, ohne Aufwand beim Anbieter der Schnittstelle zu verursachen. Das Ziel ist es, Features schnell und unabhängig umsetzen zu können.
In dem Vortrag wird vorgestellt, wie man eine hohe Nutzerzufriedenheit durch Consumer-Centric API Design und regelmäßige Produktiv-Deployments erzielt.
Möglich wird das durch ein sauberes API-Design, eine schlanke Microarchitektur und eine hohe Testautomatisierung. An praktischen Beispielen wird gezeigt, wie das erreicht werden kann.
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!)
Das sind die Folien zu unserem Webinar vom 27.3.2020 über die releasespezifischen Neuheiten welche mit ABAP 7.53/7.54 zur Verfügung stehen.
Unter Anderem wurden folgende Themen behandelt:
ABAP Dictionary
Interne Tabellen
Zuweisungen
ABAP SQL
AMDP
ABAP CDS
ABAP RESTful Programming Model
Exceptionhandling
ABAP Units
ABAP Development Tools
Das sind die Folien zu unserem Webinar vom 29.3.2019 zum Thema Modern ABAP.
Unter Anderem wurden folgende Themen behandelt:
ABAP Sprachversionen
SAP Cloud Platform ABAP Environment
ABAP Development Tools
ABAP Sprachelemente und SQL Expressions
Obsolete Sprachelemente
abapGit
CDS Views
ABAP RESTful Programming Model
Code Checks in SAP
Clean Code
Refactoring
Das sind die Folien zu unserem Webinar vom 25.1.2019 über die releasespezifischen Neuheiten welche mit ABAP 7.51 zur Verfügung stehen.
Unter Anderem wurden folgende Themen behandelt:
Enumerations
ABAP Open SQL
ABAP SQL / CDS – Eingebaute Funktionen
ABAP CDS
ABAP Development Tools
ABAP Test Cockpit Checks
ABAP Channels, ABAP Daemons
Schnelle Serialisierung für RFC
Dies sind die Slides unseres Webinars zum Thema SAP Gateway. Das Webinar fand am 24. November 2017 statt.
Themen: REST / OData Überblick, SAP Gateway Überblick, Service Generierung, CDS -> Odata, Annotations
Dies sind die Slides unseres Webinars zum Thema SAP ABAP CDS Views. Das Webinar fand am 24.6.2017 statt.
Themen: CDS Views, Eingebaute Funktionen, Parameter in CDS Views, Associations, Annotations, Integration NetWeaver Gateway, Berechtigungen, Table Functions
Dies sind die Slides unseres Webinars mit dem Thema SAP BOPF, welches wir am 27.1.2017 abgehalten haben.
Das SAP BOPF (Business Object Processing Framework) besteht aus einer Reihe von Diensten und Funktionalitäten die zur Standardisierung bzw. Modularisierung von ABAP Entwicklungen dient.
Neben einem theoretischen Überblick und ausgewählten Live Demos haben wir auch Erfahrungen aus 2 Projekten wiedergegeben.
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitCadaxo GmbH
"Prüfen Sie Ihre SELECTs auf HANA-Tauglichkeit!" Johann Fößleitner, Geschäftsführer von Cadaxo GmbH, wird Ihnen in diesem einstündigen Tutorial
zeigen, wie Sie mit dem SQL Cockpit mehr aus Ihrem SAP HANA herausholen.
Abap 7.02 new features - neue stringfunktionenCadaxo GmbH
Der Foliensatz liefert einen Überblick über neue Stringfunktionen welcher seit ABAP 7.02 vorhanden sind. Alle wichtigen Funktionen werden mit Beispielen erklärt.
2. Föß Clean Code in ABAP
Johann Fößleitner
Senior Consultant at Cadaxo
eMail: johann.foessleitner@cadaxo.com
Twitter: @foessleitnerj
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• Webanwendungen auf Basis von SAPUI5, BSP oder Web Dynpro
for ABAP
• SAP CRM Entwicklungen (WebUI, Middleware, … )
8. Clean Code in ABAP
“Clean code is simple and direct. Clean code
reads like well-written prose.”
Grady Booch, Mitbegründer von UML
9. Clean Code in ABAP
“Any fool can write code that a computer can
understand. Good programmers write code that
humans can understand.”
Martin Fowler, Pionier der agilen Softwareentwicklung
10. Clean Code in ABAP
“You know you are working on clean code when each
routine you read turns out to be pretty much what you
expected.”
Ward Cunningham, Extreme Programming Pionier und „Erfinder“ von Wiki
11. Clean Code in ABAP
Funktioniert korrekt
Lesbar wie ein Buch
Einfach und direkt
Effizient
Einfach erweiterbar
Definition von Clean Code
12. Clean Code in ABAP
Wie immer, geht‘s um
Schlechter Code kostet Geld!
13. Clean Code in ABAP
4. Juni 1996
Explosion Ariane 5
◦ 36,7 Sekunden nach dem Start
◦ Ursache
Arithmetischer Überlauf bei der Umwandlung einer 64-Bit-
Gleitkomma-Zahl in eine 16-Bit-Ganzzahl – der Wert der
horizontalen Geschwindigkeit.
Lenksystem brach zusammen und löste eine
Selbstzerstörung aus
◦ Hintergrund
Software stammt von Ariane 4. Ariane 5 flog jedoch
schneller
Schaden ca. 500 Millionen Dollar für Rakete und 4
Satelliten
14. Clean Code in ABAP
TOTER CODE
Völlig unnütz
KOMMENTARE
Meist schlecht
DUPLICATES
Don‘t repeat yourself
KOMPLEXITÄT
Schwierig zu verstehen
ZU GROßE EINHEITEN
Kleiner Einheiten sind
besser zu verstehen
NAMENSGEBUNG
Zweckbeschreibende
Namen wählen
Schlechter Code - Beispiele
15. Clean Code in ABAP
Verständlicher Code ist enorm wichtig
◦ Überwiegende Kosten für Software sind
Wartungskosten
◦ Code wird daher überwiegend gelesen
◦ Je unverständlicher der Code, desto größer die Gefahr,
dass er nicht ausreichend verstanden wird
Code wird meist gelesen
17. Clean Code in ABAP
Warum erstellen wir überhaupt schlechten Code?
18. Namensgebung Clean Code in ABAP
Namensgebung
◦ Aussagekräftige Namen für Felder, Methoden, Klassen, …
◦ Lange Namen sind nicht schlecht
◦ Namen sollen den Zweck beschreiben (GET_PARTNER)
◦ Verwendet aussprechbare & suchbare Namen
◦ Und bitte, einheitlich in Englisch
MARA-MTART oder BSEG-DMBTR sind keine Vorbilder!
19. Namensgebung Clean Code in ABAP
Beispiel: Funktionsname
◦ Was könnte bei folgendem Code ausgeführt werden
LR_DATE->ADD( 5 ).
◦ Besser wäre:
LR_DATE->ADDDAYSTO( 5 ) (addiere 5 Tage)
LR_DATE->INCREASEBYDAYS( 5 ) (addiere 5 Tage)
LR_DATE->DAYSSINCE ( 5 ) (gib datum + 5 Tage zurück)
20. Funktionen Clean Code in ABAP
Funktionen
◦ KISS – Keep it simple and stupid
◦ Funktionen sollten genau nur eine Aufgabe erledigen
◦ Minimale Funktionsargumente (Parameter)
Keine FLAGs als Parameter verwenden
◦ Einheitlich klassenbasierte Ausnahmen verwenden
21. Kommentare Clean Code in ABAP
Kommentare
◦ Niemals kommentieren, was der Code macht
◦ Kommentieren warum es so gelöst wurde
Hintergrundinfos
◦ Auskommentiertes Coding entfernen
Jedes SAP System verfügt über eine Versionsverwaltung
◦ Keine redundanten Kommentare
◦ Keine irreführenden Kommentare
22. Kommentare Clean Code in ABAP
PERFORM BUILD_QUERYTAB IN PROGRAM SAPLADCE
TABLES QUERYPARAMTAB
USING ‘EN‘ “only a dummy caused by this bullshit API
RESULT_FROM
RESULT_TO.
* This is terrible basis function module. :-((
DELETE NPLAN INDEX SY-TABIX.
“ we have to delete the whole fucky bunch of volumes where we
“ were able to insert before (life is terrible)
* 24.01.1989 mit First release
23. Kommentare Clean Code in ABAP
Beispiel: Redundante Kommentare
◦ Oft werden redundante Kommentare eingefügt
◦ Wenn der Code sich selbst ausreichend erklärt, ist ein
redundanter Kommentar nur überflüssig, verwirrend, ...
* Lesen aller Felder aus der BUT000
SELECT * FROM BUT000 INTO …
* Verlasse Routine, wenn SY-SUBRC > 0
IF SY-SUBRC > 0.
EXIT.
ENDIF.
24. Kommentare Clean Code in ABAP
Beispiel: Irreführende Kommentare
◦ Irreführende Kommentare bzw. subtile Fehlinformationen sind
schwerer zu lesen als der Code selbst
◦ Unbedingt vermeiden
* Lesen aller Felder aus der BUT000
SELECT PARTNER, NAME1 FROM BUT000 INTO …
* Verlasse Routine, wenn Fehler oder flag = true.
IF SY-SUBRC > 0 AND FLAG = ABAP_TRUE.
EXIT.
ENDIF.
25. Formatierung Clean Code in ABAP
Formatierung
◦ Code muss sauber formatiert sein
◦ Was zusammengehört, vertikal zusammenfassen
◦ Keine horizontale Ausrichtung
◦ Ein unsauber formatierter Code deutet darauf hin, dass
der eigentliche Code ebenfalls unsauber ist.
26. Ausnahmen Clean Code in ABAP
Klassenbasierte Ausnahmen sind besser als Fehlercodes
◦ Fehlercodes führen zu tief verschachtelten Strukturen, der
Aufrufer muss den Fehler sofort behandeln
◦ Der Verwendung von Ausnahmen ermöglicht die Trennung von
der Fehlerverarbeitung und dem normalen Coding
◦ Catch Bereiche in eigene Methoden auslagern
27. Ausnahmen Clean Code in ABAP
METHOD main.
TRY.
do_something( ).
do_more( ).
do_the_last_thing( ).
CATCH zcx_an_exception INTO DATA(lr_exception).
handle_exception( lr_exception ).
ENDTRY.
ENDMETHOD.
Erste Anweisung
Letzte Anweisung
Ausnahmebehandlung
In eigener Methode
28. Klassen Clean Code in ABAP
Klassen & Objekte
◦ SRP - Single-Responsibility-Prinzip – Eine Verantwortlichkeit je
Klasse
◦ Klein, Klein, Klein – keine Gottklassen erschaffen
◦ Objektorientiert entwickeln und damit Erweiterungen
ermöglichen
Es gibt auch Instanzen, Interfaces, Konstruktoren, …
29. Schlechter Code Clean Code in ABAP
Was hindert uns daran schlechten Code zu
verbessern?
30. Unit Tests Clean Code in ABAP
Unit Tests
◦ Mit Unit Tests werden einzelne Units (Methoden,
Funktionbausteine) automatisiert getestet.
◦ Ziel der Unit Tests ist die Isolation aller Parts eines Programmes
und die Prüfung ob alles ordnungsgemäß läuft.
ABAP Unit Tests
31. Unit Tests Clean Code in ABAP
Unit Tests – FIRST Prinzip
◦ Fast – Tests sollen schnell sein
◦ Independent – Tests sollen nicht von einander abhängen
◦ Repeatable – Jede Umgebung (Dev, QA, Prod, … )
◦ Self-Validating – der Test wird bestanden oder er scheitert
◦ Timely – Tests müssen rechtzeitig geschrieben werden
37. Code Inspector Clean Code in ABAP
Der Code Inspector führt verschiedene statische Prüfungen durch
◦ Es können einzelne Objekte oder viele Objekte (ein Paket, Z*, … ) geprüft werden
◦ Geprüft wird beispielsweise:
Performancekritische Statements, „totes“ Coding, fehlende Indices bei Datenbankzugriffen,
Namenskonventionen, …
◦ Meldungen können mit Pseudokommentaren (z.B. #EC CL_BYPASS) unterdrückt werden.
◦ Transaktionscode: SCI
38. Coverage Analyzer Clean Code in ABAP
Der Coverage Analyzer ist ein Tool, mit dem die Verarbeitung von ABAPs
systemweit analysiert werden kann.
◦ Ermittlung von Programmteilen welche selten bzw. nie aufgerufen werden
◦ Ermittlung von Programmteilen welche sehr oft aufgerufen werden und sich daher für
performanceverbessernde Aktivitäten eignen könnten
◦ Transaktionscode: SCOV
39. ABAP for Eclipse Clean Code in ABAP
ABAP in Eclipse
◦ Bietet mehr Möglichkeiten im
Bereich Refactoring als SE80
40. Wie schreibt man sauberen Code? Clean Code in ABAP
Wie schreibt man sauberen Code
◦ Zuerst notieren wir unsere Gedanken, ordnen sie bis sie gut
lesbar sind, bis sie logisch und verständlich sind
◦ Dann schreiben wir die Funktion. Zuerst meist eine lange
Funktion mit vielen verschachtelten Schleifen, schlechten Namen,
Duplizierungen, etc. um eine schnelles Ergebnis zu haben
◦ Und schließlich verfeinern wir den Code, lagern Funktionen aus,
ändern die Namen, eliminieren Duplizierungen
◦ Wir säubern unseren Code!
42. Arbeitsethik Clean Code in ABAP
Lebens-
langes
lernen
Praxis
Arbeits-
gebiet
kennen
Teamwork
Mentoren-
arbeit
Identifikation
mit der
Arbeit
Bescheiden
bleiben
43. Unsere Arbeitsgebiete Clean Code in ABAP
ABAP JSON / XMLJavascript
HTML5
ODataSAP HANA
JQuery CSS Web IDE
ABAP for Eclipse
Web Dynpro for ABAP
Floorplan Manager
SQL Script
CDS Views
SAP Gateway
ABAP Channels
ABAP SQL Expressions SQL Monitor
Code Inspector
BOPF
AMDP
SAPUI5
Open SQL
RegexABAP Expressions
BOR Laufzeitanalyse
BRF/BRF+
Shared Objects
BADIs
Switch Framework
Adobe Document Services
BSP
WebServices
45. Praktizieren & Üben Clean Code in ABAP
Übung macht den Meister
◦ Damit ein Musiker bei einem Konzert begeistern kann, muss er
üben.
◦ Damit ein Sportler erfolgreich ist, muss er üben.
◦ Damit ein Softwareentwickler perfekte Lösungen abliefert, muss
er üben.
Die geübten Skills sollten außerhalb des normalen Jobs sein
Skills sollen verfeinert bzw. erweitert werden
Es geht schlichtweg darum, das Gehirn zu trainieren
Beispiele in ABAP
◦ Dec/Bin/Hex Umrechnung; Quicksort ausprogrammieren; eMail Validierung mit Regex, …
46. Praktizieren & Üben Clean Code in ABAP
Picture by Wang Ming [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC-BY-SA-3.0
(http://creativecommons.org/licenses/by-sa/3.0/)], via Wikimedia Commons from Wikimedia Commons
47. Praktizieren & Üben Clean Code in ABAP
Kata – Die Perfektion ist das Ziel
◦ Ein Programmier-Kata ist eine festgelegte Gruppe von
choreographierten Tasteneingaben/Mausbewegungen
◦ Man löst nicht wirklich ein Problem, man kennt die Lösung
bereits
◦ Man übt die Bewegungen und Entscheidungen die zur Lösung
gehören
http://codekata.com/
http://katas.softwarecraftsmanship.org/
48. Praktizieren & Üben Clean Code in ABAP
Waza – Paarweise üben
◦ Entwickler A schreibt einen ABAP Unit Test
◦ Entwickler B implementiert die Methode, bis der Test bestanden
wird
◦ Entwickler A kann für den Test z.B. auch min. Geschwindigkeit
oder den max. Speicherverbrauch vorgeben.
49. Praktizieren & Üben Clean Code in ABAP
Randori – Übungen für‘s Team
◦ Editor wird an die Wand projiziert
◦ Entwickler A schreibt einen ABAP Unit Test
◦ Entwickler B implementiert die Methode, bis der Test bestanden
wird
◦ Entwickler B schreibt einen ABAP Unit Test
◦ Entwickler C implementiert die Methode, bis der Test bestanden
wird
◦ …
51. Praktizieren & Üben Clean Code in ABAP
Ethisch handeln
◦ Professionelle Entwickler üben in ihrer Freizeit
◦ Auf die eine oder andere Weise üben und praktizieren alle
Profis
Ärzte, Musiker, Sportler, …
◦ Da wir in der Freizeit üben, können wir auch in anderen
Programmiersprachen üben
◦ Es liegt in unserer eigenen Verantwortung unsere Skills zu
schärfen, es ist nicht die Verantwortung unserer Auftrag- bzw.
Arbeitgeber
52. Nächste Webinare Clean Code in ABAP
https://www.eventbrite.com/e/tdd-mit-abap-units-tickets-27079167519
54. If you want to stay in touch …
https://twitter.com/foessleitnerj
https://www.linkedin.com/in/johann-fößleitner-a9851b2a
https://www.xing.com/profile/johann_foessleitner
johann.foessleitner@cadaxo.com
See you again!
Thank you for participating!
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet!
Manchmal, haben wir das Glück ein Projekt auf einer grünen Wiese hin zu realisieren
Business wünscht sich dies und das und wir machen und hacken und alle sind 100% happy!
Business glaubt bereits, wir könnten mit der Software die Weltherrschaft erringen
Business wünscht, wir hacken done! – Super!
Dann vergehen ein paar Monate,
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet!
Manchmal, haben wir das Glück ein Projekt auf einer grünen Wiese hin zu realisieren
Business wünscht sich dies und das und wir machen und hacken und alle sind 100% happy!
Business glaubt bereits, wir könnten mit der Software die Weltherrschaft erringen
Business wünscht, wir hacken done! – Super!
Dann vergehen ein paar Monate,
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet!
Manchmal, haben wir das Glück ein Projekt auf einer grünen Wiese hin zu realisieren
Business wünscht sich dies und das und wir machen und hacken und alle sind 100% happy!
Business glaubt bereits, wir könnten mit der Software die Weltherrschaft erringen
Business wünscht, wir hacken done! – Super!
Dann vergehen ein paar Monate,
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet!
Manchmal, haben wir das Glück ein Projekt auf einer grünen Wiese hin zu realisieren
Business wünscht sich dies und das und wir machen und hacken und alle sind 100% happy!
Business glaubt bereits, wir könnten mit der Software die Weltherrschaft erringen
Business wünscht, wir hacken done! – Super!
Dann vergehen ein paar Monate,
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.
Lebenslanges lernen
Würden wir einen Arzt konsultieren, der sich nicht durch medizinische Fachjournale in seinem Metier am Laufenden hält
Warum sollten Firmen Entwickler beschäftigen, deren Wissenstand nicht aktuell ist?
Lest Bücher, Artikel, Blogs, Tweets. Besucht Konferenzen, Tagungen, Meetups, Webinare. Geht zu Usergruppen, Lesezirkeln, Studiengruppen. Lernt Dinge, die außerhalb
Eurer Komfortzone sind. Ein ABAP Entwickler könnte Java lernen
Praxis
Profis üben.
Was passiert mit unserem Coding im Lauf der Zeit?
Er verrottet, verlu
Sicherlich hat jeder von uns schon gutes und schlechtes Coding (oder auch von sich selbst ;-) gesehen
Guten bzw. schlechten Code erkennt man, wenn man in sieht.
Bei gutem Code kommt uns ein „Cool“, „Interessant“, … etc. über die Lippen. Bei schlechtem Code fragen wir uns laufend „Warum macht er das?“ oder „Was soll das bewirken“
„Clean Code“ sorgt dafür, dass unsere Codings mit „Cool“, „Interssant“, … kommentiert werden.