Your email was sent successfully. Check your inbox.

An error occurred while sending the email. Please try again.

Proceed reservation?

Export
  • 1
    UID:
    kobvindex_ERBEBC6877340
    Format: 1 online resource (399 pages)
    Edition: 1
    ISBN: 9783836286619
    Note: Intro -- Einleitung -- 1 Einführung -- 1.1 Was ist Clean ABAP? -- 1.1.1 Was ist Lesbarkeit? -- 1.1.2 Was ist die Geschichte hinter Clean ABAP? -- 1.2 Wie kann ich mit Clean ABAP anfangen? -- 1.3 Wie gehe ich mit Legacy-Code um? -- 1.4 Wie kann ich Code automatisch prüfen? -- 1.5 Wie steht Clean ABAP im Verhältnis zu anderen Programmierleitfäden? -- 1.6 Wie kann ich mich in der Clean-ABAP-Community engagieren? -- 1.7 Zusammenfassung -- 2 Die Programmiersprache ABAP -- 2.1 Legacy-Code -- 2.2 Performance -- 2.2.1 Clean Code vs. Performance -- 2.2.2 Sauber starten und nur in zwingenden Fällen abweichen -- 2.2.3 Messen, statt nur vermuten -- 2.3 Objektorientierte vs. prozedurale Programmierung -- 2.3.1 Das Programmierparadigma von ABAP -- 2.3.2 Der Unterschied zwischen Funktionsgruppen und Klassen -- 2.3.3 Besonderheiten der ABAP-Objektorientierung -- 2.3.4 Wenn Sie keine Wahl haben -- 2.4 Funktionale vs. prozedurale Sprachkonstrukte -- 2.5 Obsolete Sprachelemente -- 2.6 Entwurfsmuster -- 2.6.1 Zu viele Singletons -- 2.6.2 Zu viele Muster gemischt -- 2.7 Zusammenfassung -- 3 Klassen und Interfaces -- 3.1 Objektorientierung -- 3.1.1 Interfaces -- 3.1.2 Klassen und Objekte -- 3.1.3 Zustand -- 3.2 Geltungsbereich und Sichtbarkeit -- 3.2.1 Globaler und lokaler Geltungsbereich -- 3.2.2 Sichtbarkeit -- 3.3 Konstruktoren -- 3.3.1 Geltungsbereich und Sichtbarkeit -- 3.3.2 Dependency Injection -- 3.3.3 Statische Erzeugungsmethoden -- 3.3.4 Erzeugungsmuster -- 3.3.5 Instanziierung -- 3.4 Zusammenfassung -- 4 Methoden -- 4.1 Objektorientierte Programmierung -- 4.1.1 Statische Methoden und Instanzmethoden -- 4.1.2 Öffentliche Instanzmethoden -- 4.1.3 Redefinition einer Methode -- 4.2 Parameter -- 4.2.1 Wie viele Parameter sind zu viele? -- 4.2.2 Optionale Eingabeparameter -- 4.2.3 Bevorzugte Eingabeparameter -- 4.2.4 Boolesche Eingabeparameter , 4.2.5 EXPORTING-Parameter -- 4.2.6 RETURNING-Parameter -- 4.2.7 CHANGING-Parameter -- 4.2.8 Übergabe per Wert und Übergabe per Referenz -- 4.3 Methodeninhalt -- 4.3.1 Eine Sache tun -- 4.3.2 Eine Abstraktionsstufe absteigen -- 4.3.3 Methoden klein halten -- 4.3.4 Früh scheitern -- 4.3.5 CHECK oder RETURN -- 4.4 Methoden aufrufen -- 4.4.1 Eingabeparameter übergeben -- 4.4.2 Ausgabeparameter empfangen -- 4.4.3 Das Konstrukt CALL METHOD -- 4.4.4 Optionale Parameternamen -- 4.4.5 Selbstreferenzen -- 4.5 Zusammenfassung -- 5 Namen -- 5.1 Gute Namen -- 5.1.1 Aussagekräftige Namen -- 5.1.2 Domänenbegriffe -- 5.1.3 Plural oder Singular? -- 5.1.4 Abkürzungen -- 5.1.5 Klassen und Methoden benennen -- 5.1.6 Rauschwörter -- 5.1.7 Konsistente Begriffe -- 5.1.8 Entwurfsmuster im Code -- 5.1.9 Ungarische Notation und andere Präfixe -- 5.2 Eigenheiten von ABAP -- 5.2.1 Objektgruppen mit Namenskollisionen -- 5.2.2 Snake Case oder Camel Case? -- 5.3 Affixe: Präfixe, Suffixe und Infixe -- 5.3.1 Notwendige Affixe -- 5.3.2 Nützliche Affixe -- 5.3.3 Unnütze Affixe -- 5.4 Mit Legacy-Code umgehen -- 5.5 Zusammenfassung -- 6 Variablen und Literale -- 6.1 Variablen -- 6.1.1 Variablen deklarieren -- 6.1.2 Kontrollfluss und Gültigkeitsbereich -- 6.1.3 Verkettete Deklarationen -- 6.1.4 Schleifenvariablen -- 6.2 Konstanten -- 6.2.1 Konstanten richtig nutzen -- 6.2.2 Aufzählungsklassen -- 6.2.3 Konstanten gruppieren -- 6.3 Zeichenketten -- 6.3.1 String-Literale -- 6.3.2 Strings zusammenbauen -- 6.4 Boolesche Ausdrücke -- 6.4.1 Wann benutze ich Boolesche Ausdrücke? -- 6.4.2 Boolesche Funktion XSDBOOL für Inline-Deklarationen -- 6.5 Reguläre Ausdrücke -- 6.5.1 Einfache reguläre Ausdrücke -- 6.5.2 Grundlegende Prüfungen -- 6.5.3 Komplexe reguläre Ausdrücke -- 6.6 Das Schlüsselwort REDUCE -- 6.7 Zusammenfassung -- 7 Interne Tabellen -- 7.1 Die richtige Tabellenart verwenden , 7.1.1 Standardtabellen -- 7.1.2 Sortierte Tabellen -- 7.1.3 Hash-Tabellen -- 7.2 DEFAULT KEY vermeiden -- 7.3 Zeilen hinzufügen mit INSERT INTO TABLE und APPEND TO -- 7.3.1 Die Anweisung APPEND -- 7.3.2 Die Anweisung INSERT -- 7.4 Prüfen, ob eine Tabelle eine bestimmte Zeile enthält -- 7.4.1 Die Anweisung READ TABLE -- 7.4.2 Die Anweisung LOOP AT -- 7.4.3 Die Anweisung LINE_EXISTS -- 7.5 Tabelleninhalte abfragen -- 7.5.1 Die Anweisung LOOP AT -- 7.5.2 Die Anweisung READ TABLE -- 7.6 Die Anweisung LOOP AT ... WHERE ... und verschachtelte IF-Anweisungen -- 7.6.1 Verschachteltes IF -- 7.6.2 Die Anweisung LOOP AT ... WHERE ... -- 7.7 Unnötige Tabellenabfragen identifizieren -- 7.8 Tabellenzeilen blockweise und Zeile für Zeile bearbeiten -- 7.9 DESCRIBE TABLE und die Funktion LINES -- 7.9.1 Die Anweisung DESCRIBE TABLE -- 7.9.2 Die Anweisung LINES -- 7.10 Zusammenfassung -- 8 Kontrollfluss -- 8.1 Das Schlüsselwort IF -- 8.1.1 IF-Ausführungspfade -- 8.1.2 IF-Anweisungen kritisch hinterfragen -- 8.2 Schachtelungstiefe -- 8.3 Bedingungen -- 8.3.1 Bedingungen positiv formulieren -- 8.3.2 IS NOT oder NOT IS -- 8.3.3 Komplexe Bedingungen -- 8.4 Das Schlüsselwort CASE -- 8.4.1 CASE oder IF -- 8.4.2 CASE oder SWITCH -- 8.4.3 Wiederholte CASE- oder SWITCH-Anweisungen -- 8.5 Die Anweisung DO 1 TIMES -- 8.5.1 Pseudoschleifen für den Kontrollfluss -- 8.5.2 Refactoring -- 8.6 Zusammenfassung -- 9 Kommentare -- 9.1 Präziser Code benötigt keine Kommentare -- 9.2 Kommentare richtig platzieren und verwenden -- 9.3 Kommentare, die Sie vermeiden sollten -- 9.4 FIXME-, TODO- und XXX-Kommentare -- 9.5 Spezielle Kommentare: ABAP Doc, Pragmas und Pseudokommentare -- 9.6 Zusammenfassung -- 10 Formatierung -- 10.1 Einen konsistenten Stil verfolgen -- 10.2 Den Code fürs Lesen optimieren -- 10.3 Der Pretty Printer -- 10.4 Wie viele Anweisungen pro Zeile? -- 10.5 Zeilenlänge , 10.6 Code straffen -- 10.7 Leerzeilen -- 10.8 Zuweisungen ausrichten -- 10.9 Variablendeklarationen ausrichten -- 10.10 Wohin mit den Klammern? -- 10.11 Methodenparameter formatieren -- 10.11.1 Aufrufe mit einem Parameter -- 10.11.2 Zeilenumbrüche bei mehreren Parametern -- 10.11.3 Position der Parameter -- 10.11.4 Parameter einrücken -- 10.11.5 Vertikale Ausrichtung von Parameterwerten -- 10.11.6 Umbrüche und Einrückungen in Methodenaufrufen -- 10.11.7 Inline-Deklarationen einrücken -- 10.12 Zusammenfassung -- 11 Fehlerbehandlung -- 11.1 Nachrichten -- 11.2 Rückgabewerte -- 11.2.1 Ausnahmen oder Rückgabewerte -- 11.2.2 Umgang mit Fehlern -- 11.3 Ausnahmen -- 11.3.1 Ausnahmen für Fehlerfälle -- 11.3.2 Klassenbasierte Ausnahmen -- 11.3.3 Ausnahmen auf Basis der Klasse CX_STATIC_CHECK -- 11.3.4 Ausnahmen auf Basis der Klasse CX_NO_CHECK -- 11.3.5 Ausnahmen auf Basis der Klasse CX_DYNAMIC_EXCEPTION -- 11.4 Ausnahmen auslösen und behandeln -- 11.4.1 Ausnahmen-Oberklassen auswählen -- 11.4.2 Ausnahmen auslösen -- 11.4.3 Ausnahmen behandeln -- 11.4.4 Wann sollte ein Dump ausgelöst werden? -- 11.5 Zusammenfassung -- 12 Unit Tests -- 12.1 Testklassen -- 12.1.1 Eigenschaften von Testklassen -- 12.1.2 Gültigkeitsbereich von Testklassen -- 12.1.3 Testhelferklassen -- 12.1.4 Tests ausführen -- 12.2 Testmethoden -- 12.2.1 Methoden für den Testaufbau -- 12.2.2 Der Given-When-Then-Stil -- 12.3 Die getestete Klasse -- 12.4 Namen von Testklassen und -methoden -- 12.5 Assertions -- 12.5.1 Effiziente Assertions schreiben -- 12.5.2 Erwartete Ausnahmen prüfen -- 12.5.3 Unerwartete statische Ausnahmen -- 12.5.4 Eigene Assertions -- 12.5.5 Constraints -- 12.6 Test-Doubles -- 12.6.1 Dependency Inversion und Test-Doubles -- 12.6.2 ABAP Test Double Framework -- 12.6.3 Weitere Testwerkzeuge -- 12.7 Test-Seams -- 12.8 Konzepte zum Umgang mit Unit Tests , 12.8.1 Testgetriebene Entwicklung -- 12.8.2 Eigenschaften sauberer Tests -- 12.8.3 Testabdeckung -- 12.9 Zusammenfassung -- 13 Pakete -- 13.1 Allgemeine Paketkonzepte -- 13.1.1 Anwendungsfälle -- 13.1.2 Wiederverwendungsebenen -- 13.1.3 Kohäsion -- 13.2 Paketkonzept in ABAP -- 13.2.1 Pakettypen -- 13.2.2 Gekapselte Pakete -- 13.2.3 Paketschnittstellen -- 13.2.4 Best Practices -- 13.3 Optionen für das Paketdesign -- 13.3.1 Anwendungsbasierte Hierarchie -- 13.3.2 Schichtenbasierte Hierarchie -- 13.3.3 Aufteilung der Hierarchien nach Übersetzungsrelevanz -- 13.4 Paketprüfungen -- 13.4.1 Was sind Paketprüfungen? -- 13.4.2 Manuelle Durchführung von Paketprüfungen -- 13.4.3 Automatisierte Ausführung von Paketprüfungen -- 13.4.4 Behebung von Paketprüfungsfehlern -- 13.4.5 Best Practices -- 13.5 Konsequenzen einer mangelhaften oder fehlenden Paketstrategie -- 13.6 Zusammenfassung -- 14 Wie Sie Clean ABAP umsetzen -- 14.1 Gemeinsames Verständnis der Teammitglieder -- 14.1.1 Kollektive Code Ownership -- 14.1.2 Clean Code Developer Initiative -- 14.2 Den Broken-Window-Effekt angehen -- 14.2.1 Statische Code-Prüfung -- 14.2.2 Metriken -- 14.2.3 Code-Abdeckung -- 14.3 Code-Reviews und Lernen -- 14.3.1 Code-Review-Präfix -- 14.3.2 Styleguide -- 14.3.3 Sichtbar machen -- 14.3.4 Feedback-Kultur -- 14.4 Clean Code Advisor -- 14.5 Lerntechniken -- 14.5.1 Kata -- 14.5.2 Dojo -- 14.5.3 Code-Retreat -- 14.5.4 Fellowship -- 14.5.5 Pair Programming -- 14.5.6 Mob Programming -- 14.5.7 Gewohnheiten -- 14.6 Continuous Learning in funktionsübergreifenden Teams -- 14.6.1 Profil eines Teammitglieds -- 14.6.2 Funktionsübergreifende Teams -- 14.6.3 Multiplikatoren im Team -- 14.6.4 Community of Practice -- 14.7 Zusammenfassung -- Das Autorenteam -- Index
    Additional Edition: Print version: Haeuptle, Klaus Clean ABAP Bonn : Rheinwerk Verlag,c2022 ISBN 9783836286596
    Keywords: Electronic books.
    Library Location Call Number Volume/Issue/Year Availability
    BibTip Others were also interested in ...
Close ⊗
This website uses cookies and the analysis tool Matomo. Further information can be found on the KOBV privacy pages