Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
13
Danksagung der Autoren
17
1 Einleitung
19
1.1 Was sind Programmierrichtlinien?
19
1.2 Warum Programmierrichtlinien?
20
1.3 Um welche Richtlinien handelt es sich hier?
20
1.4 An wen richtet sich dieses Buch?
21
1.5 Zur Verwendung dieses Buches
22
2 Allgemeine Grundregeln
25
2.1 Trennung der Belange
25
2.2 KISS-Prinzip
34
2.3 Korrektheit und Qualität
37
3 ABAP-spezifische Grundregeln
43
3.1 ABAP Objects als Programmiermodell
43
3.2 Programmtyp und Programmeigenschaften
52
3.2.1 Programmtyp
53
3.2.2 Programmattribute
58
3.2.3 Originalsprache
62
3.3 Modernes ABAP
64
3.4 Prüfungen auf Korrektheit
68
3.4.1 Syntaxprüfung
68
3.4.2 Erweiterte Programmprüfung
71
3.4.3 Code Inspector
75
3.4.4 ABAP-Testcockpit
78
4 Aufbau und Stil
81
4.1 Formatierung des Quelltextes
82
4.1.1 Groß-/Kleinschreibung
82
4.1.2 Anweisungen pro Programmzeile
85
4.1.3 Verwendung des Pretty Printers
88
4.1.4 Zeilenbreite
91
4.2 Namensgebung
93
4.2.1 Wahl der Sprache
95
4.2.2 Sprechende Namen
96
4.2.3 Namen von Repository-Objekten
104
4.2.4 Programminterne Namen
108
4.3 Kommentare
118
4.3.1 Wahl der Sprache
118
4.3.2 Inhalt
120
4.3.3 Anordnung im Quelltext
123
4.4 Programm- und Prozeduraufbau
127
4.4.1 Globale Deklarationen eines Programms
127
4.4.2 Lokale Deklarationen
131
4.5 Quelltextorganisation
133
4.5.1 Quelltextmodularisierung
134
4.5.2 Mehrfachverwendung von Include-Programmen
136
4.6 Alternative Schreibweisen
138
4.6.1 Alternative Sprachkonstrukte in Anweisungen
138
4.6.2 Kettensätze
141
4.6.3 Methodenaufrufe
145
4.6.4 Zuweisungen und Berechnungen
147
4.6.5 Rechenausdrücke
148
4.7 Komplexität
150
4.7.1 Ausdrücke
151
4.7.2 Schachtelungstiefe
153
4.7.3 Prozedurvolumen
154
4.7.4 Klassengröße
155
4.7.5 Toter Code
157
5 Architektur
159
5.1 Objektorientierte Programmierung
159
5.1.1 Kapselung
160
5.1.2 Modularisierung
162
5.1.3 Statische Klassen und Singletons
166
5.1.4 Vererbung
170
5.1.5 Klassenreferenzen und Interface-Referenzen
171
5.1.6 Lokale Typen für globale Klassen
173
5.1.7 Instanzkonstruktor
175
5.2 Fehlerbehandlung
176
5.2.1 Reaktion auf Fehlersituationen
177
5.2.2 Klassische und klassenbasierte Ausnahmen
179
5.2.3 Ausnahmekategorien
183
5.2.4 Ausnahmetexte
185
5.2.5 Verwendung von Ausnahmeklassen
187
5.2.6 Ausnahmen behandeln und propagieren
189
5.2.7 Aufräumarbeiten nach Ausnahmen
191
5.2.8 Abfangbare Laufzeitfehler
193
5.2.9 Assertions
195
5.2.10 Nachrichten
197
5.3 Benutzeroberflächen
200
5.3.1 Auswahl der Oberflächentechnologie
200
5.3.2 Kapselung klassischer Oberflächen
204
5.3.3 Listen
209
5.3.4 Barrierefreiheit
212
5.4 Datenspeicherung
213
5.4.1 Persistente Datenspeicherung
214
5.4.2 Datenbankzugriffe
216
5.4.3 Mandantenbehandlung
217
5.4.4 Verwendung des Shared Memorys
219
6 Sicheres und robustes ABAP
223
6.1 Datentypen und Datenobjekte
223
6.1.1 Gebundene und eigenständige Datentypen
224
6.1.2 Deklaration von Datentypen und Konstanten
226
6.1.3 Deklaration von Variablen
230
6.1.4 Einbindung von Strukturen
233
6.1.5 Verwendung von Typen
235
6.1.6 Bezug auf Datentypen oder Datenobjekte
237
6.1.7 Tabellenarbeitsbereiche
239
6.1.8 Literale
240
6.1.9 Strings
243
6.1.10 Startwerte
245
6.1.11 Datenobjekte für Wahrheitswerte
247
6.2 Zuweisungen, Berechnungen und sonstige Zugriffe auf Daten
249
6.2.1 Zuweisungen zwischen unterschiedlichen Typen
249
6.2.2 Vermeidung ungültiger Werte
250
6.2.3 Verwendung von Konvertierungsregeln
253
6.2.4 Angabe von Zahlen
255
6.2.5 Wahl des numerischen Typs
257
6.2.6 Rundungsfehler
261
6.2.7 Division durch null
262
6.2.8 Casting
263
6.2.9 Laufzeitfehler beim Zugriff auf Datenobjekte
265
6.2.10 Anonyme Container
267
6.2.11 Referenzübergabe globaler Daten
268
6.3 Systemfelder
270
6.3.1 Zugriff
270
6.3.2 Obsolete und interne Systemfelder
272
6.3.3 Auswertung
273
6.3.4 Rückgabewert
275
6.3.5 Verwendung als Aktualparameter
276
6.3.6 Verwendung auf der Benutzeroberfläche
278
6.3.7 Verwendung an Operandenpositionen
280
6.4 Interne Tabellen
281
6.4.1 Wahl der Tabellenart
283
6.4.2 Sekundärschlüssel
285
6.4.3 Initialer Speicherbedarf
289
6.4.4 Sortiertes Befüllen
291
6.4.5 Verdichtetes Befüllen
292
6.4.6 Ausgabeverhalten
293
6.4.7 Schleifenverarbeitung
296
6.5 Modularisierungseinheiten
297
6.5.1 Funktionsbausteine und Unterprogramme
297
6.5.2 Art der Formalparameter von Prozeduren
299
6.5.3 Art der Übergabe von Formalparametern
301
6.5.4 Referenzübergabe von Ausgabeparametern
303
6.5.5 Typisierung von Formalparametern
305
6.5.6 Interne und externe Prozeduraufrufe
308
6.5.7 Prozeduren verlassen
312
6.5.8 Dialogmodule und Ereignisblöcke
314
6.5.9 Makros
316
6.6 Dynamische Programmiertechniken
319
6.6.1 Einsatz dynamischer Programmiertechniken
319
6.6.2 Laufzeitfehler bei der dynamischen Verarbeitung
321
6.6.3 Verwendung dynamischer Datenobjekte
323
6.6.4 Speicherverbrauch dynamischer Speicherobjekte
325
6.6.5 Verwaltungskosten dynamischer Speicherobjekte
329
6.6.6 Dynamischer Zugriff auf Datenobjekte
332
6.6.7 Generische Programmierung
335
6.7 Internationalisierung
340
6.7.1 Ablage von Systemtexten
340
6.7.2 Übersetzungsfreundliche Nachrichtentexte
342
6.7.3 Textumgebung
344
6.7.4 Zeichensatz von Quelltexten
346
6.7.5 Zerschneiden von Texten
347
6.7.6 Codepages für Dateien
348
Anhang
351
A Obsolete Sprachkonstrukte
353
A.1 Prozeduren
354
A.2 Deklarationen
355
A.3 Objekterzeugung
358
A.4 Aufrufe und Verlassen
359
A.5 Programmablaufsteuerung
361
A.6 Zuweisungen
362
A.7 Rechenanweisungen
364
A.8 Zeichen- und Bytekettenverarbeitung
365
A.9 Interne Tabellen
366
A.10 Dynpro-Ablauflogik
368
A.11 Klassische Listenverarbeitung
369
A.12 Datenspeicherung
371
A.13 Contexte
373
A.14 Externe Schnittstellen
374
B Automatisierte Überprüfung von Namenskonventionen
375
B.1 Namenskonventionen im Code Inspector
376
B.2 Typabhängige Präfixbestandteile
376
B.3 Präfixe für prozedurlokale Deklarationen
378
B.4 Strukturierte Programmierung
379
B.5 Objektorientierte Programmierung
380
B.6 Bewertung der Namenskonventionen
382
C Alle Regeln im Überblick
383
D Literaturverzeichnis
387
E Die Autoren
388
Index
389