SlideShare ist ein Scribd-Unternehmen logo
Clean Code in ABAP
Sauberer Code in ABAP
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, … )
Clean Code in ABAP
6. August 1990
Clean Code in ABAP
Clean Code
Clean Code – von Robert C. Martin „Uncle Bob“ Clean Code in ABAP
ISBN 978-3-8266-9695-4ISBN 978-3-8266-5548-7
Clean Code in ABAP
Umfrage Clean Code
Clean Code in ABAP
Definition von Clean Code
Clean Code in ABAP
“Clean code is simple and direct. Clean code
reads like well-written prose.”
Grady Booch, Mitbegründer von UML
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
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
Clean Code in ABAP
 Funktioniert korrekt
 Lesbar wie ein Buch
 Einfach und direkt
 Effizient
 Einfach erweiterbar
Definition von Clean Code
Clean Code in ABAP
Wie immer, geht‘s um
Schlechter Code kostet Geld!
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
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
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
Clean Code in ABAP
Clean Code in ABAP
Warum erstellen wir überhaupt schlechten Code?
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!
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)
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
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
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
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.
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.
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.
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
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
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, …
Schlechter Code Clean Code in ABAP
Was hindert uns daran schlechten Code zu
verbessern?
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
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
Unit Tests Clean Code in ABAP
Unit Tests Clean Code in ABAP
UI Tests
Acceptance Tests
Integration Tests
Unit Tests ABAP Unit
eCATT
Clean Code in ABAP
Umfrage von ABAP Units
Nächste Webinare Clean Code in ABAP
https://www.eventbrite.com/e/tdd-mit-abap-units-tickets-27079167519
Clean Code in ABAP
Tools im SAP bzw. ABAP
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
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
ABAP for Eclipse Clean Code in ABAP
 ABAP in Eclipse
◦ Bietet mehr Möglichkeiten im
Bereich Refactoring als SE80
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!
Clean Code in ABAP
Professionell sein
Arbeitsethik Clean Code in ABAP
Lebens-
langes
lernen
Praxis
Arbeits-
gebiet
kennen
Teamwork
Mentoren-
arbeit
Identifikation
mit der
Arbeit
Bescheiden
bleiben
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
Clean Code in ABAP
Praktizieren & Üben
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, …
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
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/
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.
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
◦ …
Praktizieren & Üben Clean Code in ABAP
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
Nächste Webinare Clean Code in ABAP
https://www.eventbrite.com/e/tdd-mit-abap-units-tickets-27079167519
Vergangene Webinare Clean Code in ABAP
http://www.cadaxo.com/blog/
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!
http://com.slideshare.net/cadaxogmbh
https://twitter.com/cadaxo
https://www.linkedin.com/company/cadaxo-gmbh
http://www.youtube.com/CadaxoGmbH
https://www.facebook.com/CadaxoGmbH
https://www.xing.com/companies/cadaxogmbhCadaxo GmbH
Stubenring 18/5a| 1010 Vienna, Austria
office@cadaxo.com
www.cadaxo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Agricultural problems of india
Agricultural problems of indiaAgricultural problems of india
Agricultural problems of india
Vaibhav verma
 
Digitalization in agriculture for enhancing sustainable agriculture and rural...
Digitalization in agriculture for enhancing sustainable agriculture and rural...Digitalization in agriculture for enhancing sustainable agriculture and rural...
Digitalization in agriculture for enhancing sustainable agriculture and rural...
Private Agriculture College at Tamil Nadu
 
COVID-19: Impacts on Food and Agriculture
COVID-19: Impacts on Food and AgricultureCOVID-19: Impacts on Food and Agriculture
COVID-19: Impacts on Food and Agriculture
International Food Policy Research Institute (IFPRI)
 
Organic Agriculture in India
Organic Agriculture in IndiaOrganic Agriculture in India
Organic Agriculture in India
School Vegetable Gardening - Victory Gardens
 
(1) Thailand Rice Value Chain December 1 2022.pdf
(1) Thailand Rice Value Chain December 1 2022.pdf(1) Thailand Rice Value Chain December 1 2022.pdf
(1) Thailand Rice Value Chain December 1 2022.pdf
sompornisvilanonda2
 
Agro and Food Processing Sector
Agro and Food Processing SectorAgro and Food Processing Sector
Agro and Food Processing Sector
Vibrant Gujarat
 
agriculture of india ppt
agriculture of india ppt agriculture of india ppt
agriculture of india ppt
AbdulKadirIdrisi
 
Millets For Food And Nutritional Security
Millets For Food And Nutritional SecurityMillets For Food And Nutritional Security
Millets For Food And Nutritional Security
FSTnortheast
 
What does agricultural policy mean
What does agricultural policy meanWhat does agricultural policy mean
What does agricultural policy mean
Jubayer Alam Shoikat
 
comparison between NPOP AND NOP2.pdf
comparison between NPOP AND NOP2.pdfcomparison between NPOP AND NOP2.pdf
comparison between NPOP AND NOP2.pdf
ORGANIL SERVICES
 
AGRICULTURAL WASTE MANAGEMENT
AGRICULTURAL WASTE MANAGEMENTAGRICULTURAL WASTE MANAGEMENT
AGRICULTURAL WASTE MANAGEMENT
Abhapratim
 
Agro-processing complex
Agro-processing complexAgro-processing complex
Agro-processing complex
RuchikaZalpouri
 
Status, Scope and challenges in Millet processing
Status, Scope and challenges in Millet processingStatus, Scope and challenges in Millet processing
Status, Scope and challenges in Millet processing
MuzaffarHasan1
 
Agriculture in india 2
Agriculture  in  india 2Agriculture  in  india 2
Agriculture in india 2
Dr. Pinki Insan
 
Apeda
ApedaApeda
Rural Development and Agricultural Sustainability
Rural Development and Agricultural SustainabilityRural Development and Agricultural Sustainability
Rural Development and Agricultural Sustainability
A. İrfan İLBAŞ
 
SUSTAINABLE-AGRICULTURE.pdf
SUSTAINABLE-AGRICULTURE.pdfSUSTAINABLE-AGRICULTURE.pdf
SUSTAINABLE-AGRICULTURE.pdf
MeetJepsy
 
Digital agriculture
Digital agricultureDigital agriculture
Digital agriculture
Divya Chhabra
 
Agriculture and Allied Industries Sector Report - February 2019
Agriculture and Allied Industries Sector Report - February 2019Agriculture and Allied Industries Sector Report - February 2019
Agriculture and Allied Industries Sector Report - February 2019
India Brand Equity Foundation
 
Apeda
ApedaApeda

Was ist angesagt? (20)

Agricultural problems of india
Agricultural problems of indiaAgricultural problems of india
Agricultural problems of india
 
Digitalization in agriculture for enhancing sustainable agriculture and rural...
Digitalization in agriculture for enhancing sustainable agriculture and rural...Digitalization in agriculture for enhancing sustainable agriculture and rural...
Digitalization in agriculture for enhancing sustainable agriculture and rural...
 
COVID-19: Impacts on Food and Agriculture
COVID-19: Impacts on Food and AgricultureCOVID-19: Impacts on Food and Agriculture
COVID-19: Impacts on Food and Agriculture
 
Organic Agriculture in India
Organic Agriculture in IndiaOrganic Agriculture in India
Organic Agriculture in India
 
(1) Thailand Rice Value Chain December 1 2022.pdf
(1) Thailand Rice Value Chain December 1 2022.pdf(1) Thailand Rice Value Chain December 1 2022.pdf
(1) Thailand Rice Value Chain December 1 2022.pdf
 
Agro and Food Processing Sector
Agro and Food Processing SectorAgro and Food Processing Sector
Agro and Food Processing Sector
 
agriculture of india ppt
agriculture of india ppt agriculture of india ppt
agriculture of india ppt
 
Millets For Food And Nutritional Security
Millets For Food And Nutritional SecurityMillets For Food And Nutritional Security
Millets For Food And Nutritional Security
 
What does agricultural policy mean
What does agricultural policy meanWhat does agricultural policy mean
What does agricultural policy mean
 
comparison between NPOP AND NOP2.pdf
comparison between NPOP AND NOP2.pdfcomparison between NPOP AND NOP2.pdf
comparison between NPOP AND NOP2.pdf
 
AGRICULTURAL WASTE MANAGEMENT
AGRICULTURAL WASTE MANAGEMENTAGRICULTURAL WASTE MANAGEMENT
AGRICULTURAL WASTE MANAGEMENT
 
Agro-processing complex
Agro-processing complexAgro-processing complex
Agro-processing complex
 
Status, Scope and challenges in Millet processing
Status, Scope and challenges in Millet processingStatus, Scope and challenges in Millet processing
Status, Scope and challenges in Millet processing
 
Agriculture in india 2
Agriculture  in  india 2Agriculture  in  india 2
Agriculture in india 2
 
Apeda
ApedaApeda
Apeda
 
Rural Development and Agricultural Sustainability
Rural Development and Agricultural SustainabilityRural Development and Agricultural Sustainability
Rural Development and Agricultural Sustainability
 
SUSTAINABLE-AGRICULTURE.pdf
SUSTAINABLE-AGRICULTURE.pdfSUSTAINABLE-AGRICULTURE.pdf
SUSTAINABLE-AGRICULTURE.pdf
 
Digital agriculture
Digital agricultureDigital agriculture
Digital agriculture
 
Agriculture and Allied Industries Sector Report - February 2019
Agriculture and Allied Industries Sector Report - February 2019Agriculture and Allied Industries Sector Report - February 2019
Agriculture and Allied Industries Sector Report - February 2019
 
Apeda
ApedaApeda
Apeda
 

Andere mochten auch

Inventory Management - a ppt for PGDM/MBA
Inventory Management - a ppt for PGDM/MBAInventory Management - a ppt for PGDM/MBA
Inventory Management - a ppt for PGDM/MBA
AJ Raina
 
What is the best Healthcare Data Warehouse Model for Your Organization?
What is the best Healthcare Data Warehouse Model for Your Organization?What is the best Healthcare Data Warehouse Model for Your Organization?
What is the best Healthcare Data Warehouse Model for Your Organization?
Health Catalyst
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing Content
Neil Patel
 
Assessment in Social work: A guide for learning and teaching
Assessment in Social work: A guide for learning and teachingAssessment in Social work: A guide for learning and teaching
Assessment in Social work: A guide for learning and teaching
foreman
 
Crm final ppt
Crm final pptCrm final ppt
Crm final ppt
Krishma Sandesra
 
Soft tissue tumor
Soft tissue tumorSoft tissue tumor
Soft tissue tumor
Narmada Tiwari
 
Women empowerment
Women empowermentWomen empowerment
Women empowerment
Menaal Kaushal
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Yasutomo Kawanishi
 
DB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
DB-Security - Sichere und fraglich sichere Techniken | C.HabermuellerDB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
DB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
Christian Habermueller
 
Open Source in der Luft- und Raumfahrt-Forschung
Open Source in der Luft- und Raumfahrt-ForschungOpen Source in der Luft- und Raumfahrt-Forschung
Open Source in der Luft- und Raumfahrt-Forschung
Andreas Schreiber
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.
Emiland
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for Success
Jonathon Colman
 
Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?
LaNetscouade
 
Data Encoding
Data EncodingData Encoding
Data Encoding
Luka M G
 
Immuno-Oncology: An Evolving Approach to Cancer Care
Immuno-Oncology: An Evolving Approach to Cancer CareImmuno-Oncology: An Evolving Approach to Cancer Care
Immuno-Oncology: An Evolving Approach to Cancer Care
Institute For Medical Education and Research (IMER)
 
The Literature Review Process
The Literature Review ProcessThe Literature Review Process
The Literature Review Process
annielibrarian
 
Rizal's grand tour of europe with viola
Rizal's grand tour of europe with violaRizal's grand tour of europe with viola
Rizal's grand tour of europe with viola
Daisy Mae Valeroso Cunanan
 
Pollution And Human Health
Pollution And Human HealthPollution And Human Health
Pollution And Human Health
Mike Slater
 
Workplace Accountability: How Effective Managers Create a Culture of Ownership
Workplace Accountability: How Effective Managers Create a Culture of OwnershipWorkplace Accountability: How Effective Managers Create a Culture of Ownership
Workplace Accountability: How Effective Managers Create a Culture of Ownership
The Business LockerRoom
 
⼤企業で実現するイマドキの内製開発
⼤企業で実現するイマドキの内製開発⼤企業で実現するイマドキの内製開発
⼤企業で実現するイマドキの内製開発
NTT Communications Technology Development
 

Andere mochten auch (20)

Inventory Management - a ppt for PGDM/MBA
Inventory Management - a ppt for PGDM/MBAInventory Management - a ppt for PGDM/MBA
Inventory Management - a ppt for PGDM/MBA
 
What is the best Healthcare Data Warehouse Model for Your Organization?
What is the best Healthcare Data Warehouse Model for Your Organization?What is the best Healthcare Data Warehouse Model for Your Organization?
What is the best Healthcare Data Warehouse Model for Your Organization?
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing Content
 
Assessment in Social work: A guide for learning and teaching
Assessment in Social work: A guide for learning and teachingAssessment in Social work: A guide for learning and teaching
Assessment in Social work: A guide for learning and teaching
 
Crm final ppt
Crm final pptCrm final ppt
Crm final ppt
 
Soft tissue tumor
Soft tissue tumorSoft tissue tumor
Soft tissue tumor
 
Women empowerment
Women empowermentWomen empowerment
Women empowerment
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 
DB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
DB-Security - Sichere und fraglich sichere Techniken | C.HabermuellerDB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
DB-Security - Sichere und fraglich sichere Techniken | C.Habermueller
 
Open Source in der Luft- und Raumfahrt-Forschung
Open Source in der Luft- und Raumfahrt-ForschungOpen Source in der Luft- und Raumfahrt-Forschung
Open Source in der Luft- und Raumfahrt-Forschung
 
Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.Dear NSA, let me take care of your slides.
Dear NSA, let me take care of your slides.
 
What I Carry: 10 Tools for Success
What I Carry: 10 Tools for SuccessWhat I Carry: 10 Tools for Success
What I Carry: 10 Tools for Success
 
Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?Les marques vont elles devenir les premiers médias ?
Les marques vont elles devenir les premiers médias ?
 
Data Encoding
Data EncodingData Encoding
Data Encoding
 
Immuno-Oncology: An Evolving Approach to Cancer Care
Immuno-Oncology: An Evolving Approach to Cancer CareImmuno-Oncology: An Evolving Approach to Cancer Care
Immuno-Oncology: An Evolving Approach to Cancer Care
 
The Literature Review Process
The Literature Review ProcessThe Literature Review Process
The Literature Review Process
 
Rizal's grand tour of europe with viola
Rizal's grand tour of europe with violaRizal's grand tour of europe with viola
Rizal's grand tour of europe with viola
 
Pollution And Human Health
Pollution And Human HealthPollution And Human Health
Pollution And Human Health
 
Workplace Accountability: How Effective Managers Create a Culture of Ownership
Workplace Accountability: How Effective Managers Create a Culture of OwnershipWorkplace Accountability: How Effective Managers Create a Culture of Ownership
Workplace Accountability: How Effective Managers Create a Culture of Ownership
 
⼤企業で実現するイマドキの内製開発
⼤企業で実現するイマドキの内製開発⼤企業で実現するイマドキの内製開発
⼤企業で実現するイマドキの内製開発
 

Ähnlich wie Clean code in ABAP

Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1
Gregor Biswanger
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
Cadaxo GmbH
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Gregor Biswanger
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
Cadaxo GmbH
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAP
Cadaxo GmbH
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
Florian Bader
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
Stephan Schmidt
 
Webinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPWebinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAP
Cadaxo GmbH
 
Kontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
Kontinuierliche Überprüfung der Code-Qualität mit ScrutinizerKontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
Kontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
FATCHIP GmbH
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptx
kaftanenko
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Philipp Burgmer
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Mayflower GmbH
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
Dennis Wilson
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
Nico Orschel
 
Code Reviews - Best Practices
Code Reviews - Best PracticesCode Reviews - Best Practices
Code Reviews - Best Practices
Robin Sedlaczek
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
OPEN KNOWLEDGE GmbH
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
Hussein Morsy
 
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
DietrichRordorf
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
Nico Orschel
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
JanWeinschenker
 

Ähnlich wie Clean code in ABAP (20)

Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
Webinar - Boost your ABAP
Webinar - Boost your ABAPWebinar - Boost your ABAP
Webinar - Boost your ABAP
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
PHP mit Paul Bocuse
PHP mit Paul BocusePHP mit Paul Bocuse
PHP mit Paul Bocuse
 
Webinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAPWebinar - Entwurfsmuster in ABAP
Webinar - Entwurfsmuster in ABAP
 
Kontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
Kontinuierliche Überprüfung der Code-Qualität mit ScrutinizerKontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
Kontinuierliche Überprüfung der Code-Qualität mit Scrutinizer
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptx
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
Commercial OS Shops - Magento, OXID, xt:commerce. Evaluationskriterien für En...
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Code Reviews - Best Practices
Code Reviews - Best PracticesCode Reviews - Best Practices
Code Reviews - Best Practices
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
 
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
UI Testautomation in der Praxis ... von Lokalisierung bis Nachhaltigkeit (Cod...
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 

Mehr von Cadaxo GmbH

Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
Cadaxo GmbH
 
Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54
Cadaxo GmbH
 
Webinar ABAP Managed Database Procedures
Webinar ABAP Managed Database ProceduresWebinar ABAP Managed Database Procedures
Webinar ABAP Managed Database Procedures
Cadaxo GmbH
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
Cadaxo GmbH
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
Cadaxo GmbH
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
Cadaxo GmbH
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
Cadaxo GmbH
 
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
Cadaxo GmbH
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
Cadaxo GmbH
 
Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
Cadaxo GmbH
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Cadaxo GmbH
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
Cadaxo GmbH
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Cadaxo GmbH
 
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitPrüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Cadaxo GmbH
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo GmbH
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
Cadaxo GmbH
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
Cadaxo GmbH
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
Cadaxo GmbH
 

Mehr von Cadaxo GmbH (18)

Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
 
Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54Webinar - ABAP Releasenotes 7.53/7.54
Webinar - ABAP Releasenotes 7.53/7.54
 
Webinar ABAP Managed Database Procedures
Webinar ABAP Managed Database ProceduresWebinar ABAP Managed Database Procedures
Webinar ABAP Managed Database Procedures
 
Webinar Modern ABAP
Webinar Modern ABAPWebinar Modern ABAP
Webinar Modern ABAP
 
Webinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 ReleaseinformationenWebinar ABAP 7.51 Releaseinformationen
Webinar ABAP 7.51 Releaseinformationen
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
 
Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
 
Webinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige ÄnderungenWebinar - ABAP 7.50 Releaseabhängige Änderungen
Webinar - ABAP 7.50 Releaseabhängige Änderungen
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA TauglichkeitPrüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
Prüfen Sie Ihre ABAP SQL Abfragen auf SAP HANA Tauglichkeit
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 

Clean code in ABAP

  • 1. Clean Code in ABAP Sauberer Code in ABAP
  • 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, … )
  • 3. Clean Code in ABAP 6. August 1990
  • 4. Clean Code in ABAP Clean Code
  • 5. Clean Code – von Robert C. Martin „Uncle Bob“ Clean Code in ABAP ISBN 978-3-8266-9695-4ISBN 978-3-8266-5548-7
  • 6. Clean Code in ABAP Umfrage Clean Code
  • 7. Clean Code in ABAP Definition von Clean Code
  • 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
  • 32. Unit Tests Clean Code in ABAP
  • 33. Unit Tests Clean Code in ABAP UI Tests Acceptance Tests Integration Tests Unit Tests ABAP Unit eCATT
  • 34. Clean Code in ABAP Umfrage von ABAP Units
  • 35. Nächste Webinare Clean Code in ABAP https://www.eventbrite.com/e/tdd-mit-abap-units-tickets-27079167519
  • 36. Clean Code in ABAP Tools im SAP bzw. ABAP
  • 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!
  • 41. Clean Code in ABAP Professionell sein
  • 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
  • 44. Clean Code in ABAP Praktizieren & Üben
  • 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 ◦ …
  • 50. Praktizieren & Üben Clean Code in ABAP
  • 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
  • 53. Vergangene Webinare Clean Code in ABAP http://www.cadaxo.com/blog/
  • 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!

Hinweis der Redaktion

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.