ABAP Clean Code

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
68 Beiträge • Seite 1 von 5 (current) Nächste
68 Beiträge Seite 1 von 5 (current) Nächste

ABAP Clean Code

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
Hallo Kollegen,
SAP hat unter Github ABAP Styleguides abgelegt zur öffentlichen Beachtung und am Besten auch Befolgung.

https://github.com/SAP/styleguides/blob ... eanABAP.md

Viel Spaß beim Lesen. Bin gespannt auf aufkommende Diskussionen! :)

Folgende Benutzer bedankten sich beim Autor nickname8 für den Beitrag (Insgesamt 4):
tm987456moo_joqyurryusLGiesken


gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: ABAP Clean Code

Beitrag von black_adept (Top Expert / 4080 / 125 / 935 ) »
Das Schlimmste ist diese dort verlinkte Seite - und die Meisten werden wissen warum!

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Romaniac

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ABAP Clean Code

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Ist doch eine erfreuliche Entwicklung.

Bleibt nur zu hoffen, dass die SAP sich auch an diesen Styleguide hält :-)

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
moo_jo


Re: ABAP Clean Code

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
This kind of prefixing is a relic from the early days of programming, when code was printed out and read on paper, and you didn't want to flip around just to find some variable's type. Modern development environments give easy access to data types, signatures, and object navigation, such that it is no longer needed to get readable code.

Kann man nicht oft genug wiederholen.

Re: ABAP Clean Code

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Jetzt möchte ich mal sehen, ob die DSAG ihre Programmierrichtlinien nicht doch noch modernisiert (die raten zu intensiver Nutzung der Ungarischen Notation, wenigstens führen sie auf, dass es auch andere Meinungen dazu gibt - dabei verlinken sie auf meinen SDN-Artikel).

Das ist Coding aus der Hölle.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: ABAP Clean Code

Beitrag von nickname8 (Specialist / 134 / 17 / 19 ) »
SAP > DSAG
Aber klar, viele richten sich nach der DSAG. Hoffe auch, dass die es ändern. Und unsere Firma hoffentlich auch.
Finde viele Sachen gut, mit allem bin ich nicht einverstanden.
Zum Beispiel finde ich es besser, für alle Membervariablen auch wirkliche Getter zu schreiben, statt sie public read only zu machen:
https://github.com/SAP/styleguides/blob ... -of-getter

Re: ABAP Clean Code

Beitrag von black_adept (Top Expert / 4080 / 125 / 935 ) »
Was ist eigentlich die beste Alternative um dann Verschattungen von Variablen möglichst zu verhindern? Das hatte bei Verwendung der HN durch den 1. Buchstaben eigentlich recht gut geklappt und der Syntaxcheck würde bei Präfixen das folgende Beispiel nicht durchgehen lassen.
Beispiel: Was kommt als Ausgabe beim folgenden Programm raus?

Code: Alles auswählen.

REPORT.
DATA: testvariable1 TYPE sydatum,
      testvariable2 TYPE sydatum.

PERFORM test CHANGING testvariable1 testvariable2.
WRITE:/ testvariable1, testvariable2.

FORM test  CHANGING  cv_datum1 TYPE sydatum cv_datum2 TYPE sydatum.
  DATA: testvariablel TYPE sydatum,
        testvariable2 TYPE sydatum.

  testvariablel = sy-datum + 10.
  testvariable2 = sy-datum + 20.
  cv_datum1 = testvariable1.
  cv_datum2 = testvariable2.
ENDFORM.                    "test
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ABAP Clean Code

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Da kommt 0 und heute+20 raus.
Und wer so programmiert gehört entlassen.

Folgende Benutzer bedankten sich beim Autor Daniel für den Beitrag (Insgesamt 2):
SaskuAcDeathAndPain


Re: ABAP Clean Code

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
black_adept hat geschrieben:
08.05.2019 09:23
Was ist eigentlich die beste Alternative um dann Verschattungen von Variablen möglichst zu verhindern? Das hatte bei Verwendung der HN durch den 1. Buchstaben eigentlich recht gut geklappt und der Syntaxcheck würde bei Präfixen das folgende Beispiel nicht durchgehen lassen.
Beispiel: Was kommt als Ausgabe beim folgenden Programm raus?
Das ist eben eine schwäche die ABAP hat. aber mit guten OO funktioniert das zum Beispiel recht gut:

Code: Alles auswählen.

CLASS lcl_test DEFINITION.

  PUBLIC SECTION.

    METHODS: abc IMPORTING test TYPE i.
    METHODS: adc RETURNING VALUE(test) TYPE i.

  PRIVATE SECTION.

    DATA test TYPE i.
ENDCLASS.

CLASS lcl_test IMPLEMENTATION.

  METHOD abc.
    me->test = test.
  ENDMETHOD.

  METHOD adc.
    test = me->test.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

  DATA(bruuuh) = NEW lcl_test( ).
  bruuuh->abc(  4 ).
  WRITE bruuuh->adc( ).
was kommt raus? richtig 4. Wenn man referenzvariablen mit "me->" voran anspricht und statische Variablen mit dem klassennamen voran, dann funktioniert das einwandfrei. Und ansonsten, wie wäre es einfach nicht 2 Mal den gleichen Variablennamen zu verwenden? Mit ordentlicher Kapselung funktioniert das alles einwandfrei.

Re: ABAP Clean Code

Beitrag von ewx (Top Expert / 4843 / 310 / 638 ) »
Daniel hat geschrieben:
08.05.2019 10:24
Da kommt 0 und heute+20 raus.
Und wer so programmiert gehört entlassen.
Das muss ja nicht immer böse Absicht sein...

Re: ABAP Clean Code

Beitrag von black_adept (Top Expert / 4080 / 125 / 935 ) »
Daniel hat geschrieben:
08.05.2019 10:24
Da kommt 0 und heute+20 raus.
Und wer so programmiert gehört entlassen.
@Daniel: Wenn du in einem fremden Programm weiterentwickeln musst - kennst du alle globalen Variablennamen und kannst du sicherstellen, dass dir nie ein Buchstabendreher unterläuft?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ABAP Clean Code

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Nein, natürlich nicht.
Ich scheue aber nicht davor zurück
solche Konstrukte aufzuräumen.
Die verursachen garantiert noch Ärger!

Re: ABAP Clean Code

Beitrag von black_adept (Top Expert / 4080 / 125 / 935 ) »
SaskuAc hat geschrieben:
08.05.2019 11:26
Das ist eben eine Schwäche die ABAP hat.
die durch konsequentes Handhaben von Präfixen behoben wird.
SaskuAc hat geschrieben:
08.05.2019 11:26
aber mit guten OO funktioniert das zum Beispiel recht gut.[...]Wenn man Referenzvariablen mit "me->" voran anspricht und statische Variablen mit dem Klassennamen voran, dann funktioniert das einwandfrei.
Und wenn man die Deklaration von statisch auf Instanz oder umgekehrt ändert ( was am Anfang einer Entwicklung durchaus von Zeit zu Zeit vorkommt ) müsste ich alle Aufrufstellen korrigieren. Versteh mich nicht falsch - es gibt gute Gründe genau so zu verfahren wie du - aber es gibt eben auch gute Gründe warum man eine saubere Präfixierung durchziehen möchte um diverse (andere) Probleme einfach zu umgehen
SaskuAc hat geschrieben:
08.05.2019 11:26
Und ansonsten, wie wäre es einfach nicht 2 Mal den gleichen Variablennamen zu verwenden?
Das Problem im Beispiel ist nicht der 2 mal vergebene Variablenname ( in diesem Fall ist die Verschattung ja gewollt ) sondern der Buchstabendreher, der die Verschattung umgeht. Wenn es sich da um ein größeres Codekonglomerat handelt ist der Fehler schwer und spät (erst zur Laufzeit) zu finden. Obwohl alle nach bestem Wissen gehandelt haben kann hier ein Fehler auftauchen, der durch Präfixe und entsprechende SCI-Prüfungen im Vorfeld gefunden worden wäre.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ABAP Clean Code

Beitrag von black_adept (Top Expert / 4080 / 125 / 935 ) »
Daniel hat geschrieben:
08.05.2019 12:27
Nein, natürlich nicht.
Ich scheue aber nicht davor zurück
solche Konstrukte aufzuräumen.
Die verursachen garantiert noch Ärger!
@Daniel ACK. Aber du musst es finden bevor du es aufräumen kannst. Und da Namenskonventionen helfen solche (zugegeben recht seltenen aber doch von Zeit zu Zeit vorkommende ) Fehler automatisiert zu finden kann ich eben diese Präfixabneigung nicht teilen. Und das "this" des Zitats was du oben gepostet hast bezieht sich wahrscheinlich auf solche Präfixe die die Typisierung betreffen und nicht den Gültigkeitsbereich.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ABAP Clean Code

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Frage zurück:
Wenn wir das Codebeispiel mit der ungarischen Notation gestaltet hätten, wie kann dann mit der statischen Syntaxprüfung die falsche Verwendung der Variable ausgeschlossen werden?

Ich kann ja immer noch in Gedanken das falsche Präfix verwenden:

Code: Alles auswählen.

REPORT.

DATA: g_testvariable1 TYPE sydatum,
      g_testvariable2 TYPE sydatum.

PERFORM test CHANGING g_testvariable1 g_testvariable2.
WRITE:/ g_testvariable1, g_testvariable2.

FORM test  CHANGING  cv_datum1 TYPE sydatum cv_datum2 TYPE sydatum.
  DATA: l_testvariable1 TYPE sydatum,
        l_testvariable2 TYPE sydatum.

  g_testvariable1 = sy-datum + 10.
  l_testvariable2 = sy-datum + 20.
  cv_datum1 = l_testvariable1.
  cv_datum2 = l_testvariable2.

ENDFORM.                    "test
Um Variablendreher, ungewollte Verschattungen usw. zu finden, verwenden wir schließlich Unit Tests.

Vergleichbare Themen

3
Antw.
2297
Views
Diskussionsthema: Clean Code
von c oco » 19.07.2017 14:19 • Verfasst in SAP - Allgemeines
4
Antw.
3344
Views
PAP aus ABAP-Code
von BesenWesen » 21.06.2006 09:49 • Verfasst in ABAP® Core
1
Antw.
5018
Views
ABAP CODE ANALYSE
von Paradoxon5 » 22.12.2015 08:54 • Verfasst in ABAP® Core
1
Antw.
1796
Views
Testen von ABAP Code
von DavidHenn » 07.07.2011 10:27 • Verfasst in ABAP® Core
0
Antw.
1691
Views
RSA-Algorithmus im ABAP-Code
von stefan76 » 05.10.2006 17:31 • Verfasst in ABAP® Core

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1666
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8268