Ein paar Dinge wurden ja schon genannt.ewx hat geschrieben:Ärgert ihr euch häufiger über bestimmte "Programmierunarten" oder schlechte Umsetzungen bei Programmen, die ihr korrigieren oder warten müsste? Wenn ja, welche sind das?
Code: Alles auswählen.
CONSTANTS con_x VALUE 'X'.
CONSTANTS: con_1234(4) VALUE '1234'.
Folgende Benutzer bedankten sich beim Autor Frank Dittrich für den Beitrag (Insgesamt 2):
ewx • Haubi
Das habe ich den zwei Dutzend Entwicklern bei einem Kunden mal um die Ohren gehauen. Die eine Begründung war "Ist schneller zu ändern", was natürlich Quatsch ist, wenn sich die Bedeutung eines X ändert. Die andere Begründung war "Programme dürfen keine Literale enthalten, sonst meckert der Check wg. fehlender Übersetzbarkeit", was schon sehr, sehr lange nicht mehr stimmt.Frank Dittrich hat geschrieben:Ein paar Dinge wurden ja schon genannt.ewx hat geschrieben:Ärgert ihr euch häufiger über bestimmte "Programmierunarten" oder schlechte Umsetzungen bei Programmen, die ihr korrigieren oder warten müsste? Wenn ja, welche sind das?
Ich liebe so etwas wieAlso Konstanten ohne Bezug auf einen DDIC-Typ o.ä. und mit einem Namen, der nichts über die Bedeutung verrät, und dann die gleiche Konstante für verschiedene. voneinander unabhängige Dinge verwenden, z.B. die Konstante 1234 einmal für eine Bewegungsart, einmal für BUKRS o.ä.Code: Alles auswählen.
CONSTANTS con_x VALUE 'X'. CONSTANTS: con_1234(4) VALUE '1234'.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
ewx
Code: Alles auswählen.
MESSAGE s... WITH ...
CALL FUNCTION 'DB_COMMIT'.
Folgende Benutzer bedankten sich beim Autor Frank Dittrich für den Beitrag:
ewx
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
ewx
Deswegen habe ich mich bei dem Wunsch von Alexander D.ralf.wenzel hat geschrieben:Leider hat dieser Kunde auch die Regel: Coding wird niemals gelöscht, sondern immer nur auskommentiert (mit Verweis auf das Ticket). Zu welchen Codingwüsten das führt, kann sich jeder vorstellen. Stellt euch ein Programm vor, in dem ein Block von zehn Zeilen auskommentiert und darunter komplett anders geschrieben wurde, dann sind in diesem Block zwei Zeilen eingefügt und noch später drei andere gelöscht worden.
auch etwas mit Kommentaren zurückgehalten.für uns wird in naher Zukunft das Thema "Programmierrichtlinie für ABAP" interessant. Zur Zeit gibt es bei uns keine Vorgaben, dementsprechend sehen auch unsere Programme aus.
Folgende Benutzer bedankten sich beim Autor Frank Dittrich für den Beitrag:
ewx
Ich bin gerade in einem System unterwegs, welches 1998 von R2 nach R3 migriert wurde. Da gab es wohl auch eine Programmrichtline, das man möglichst viele sinnfreie Konstanten definiert. Wobei ich mich mehr über die Vollpfosten aufrege, die dann in den folgenden Jahren diese Programme "gewartet" haben. Ich weiß nicht in wievielen Programmen ich mitlerweile vorbeigekommen bin wo man sowas im TOP-Include findet:ralf.wenzel hat geschrieben:Das habe ich den zwei Dutzend Entwicklern bei einem Kunden mal um die Ohren gehauen.....Dieser Kunde hatte TOP-Includes, bei denen erstmal das ganze Alphabet "durchkonstantiert" wurde (gc_a, gc_b, ....) und dann die Ziffern 0-9 per Konstante festgelegt wurden.
...
Leider hat dieser Kunde auch die Regel: Coding wird niemals gelöscht, sondern immer nur auskommentiert (mit Verweis auf das Ticket).
Code: Alles auswählen.
* CONSTANTS gc_x VALUE 'X'. "T01xxxxxxx: wegen Umstellung xyz
CONSTANTS gc_x VALUE 'V'.
Code: Alles auswählen.
FORM A001 USING ... ENDFORM.
FORM B001 USING ... ENDFORM.
FORM B002 USING ... ENDFORM.
FORM C001 USING ... ENDFORM.
Ich hielt das immer für ein Gerücht, dass Programmierer früher pro Codingzeile bezahlt wurden, so langsam denke ich, dass da was dran ist.JHM hat geschrieben:Ich bin gerade in einem System unterwegs, welches 1998 von R2 nach R3 migriert wurde. Da gab es wohl auch eine Programmrichtline, das man möglichst viele sinnfreie Konstanten definiert.ralf.wenzel hat geschrieben:Das habe ich den zwei Dutzend Entwicklern bei einem Kunden mal um die Ohren gehauen.....Dieser Kunde hatte TOP-Includes, bei denen erstmal das ganze Alphabet "durchkonstantiert" wurde (gc_a, gc_b, ....) und dann die Ziffern 0-9 per Konstante festgelegt wurden.
...
Leider hat dieser Kunde auch die Regel: Coding wird niemals gelöscht, sondern immer nur auskommentiert (mit Verweis auf das Ticket).
YMMD, so einen Schwachsinn hab ich ja selbst noch nie gesehen LOLJHM hat geschrieben:Wobei ich mich mehr über die Vollpfosten aufrege, die dann in den folgenden Jahren diese Programme "gewartet" haben. Ich weiß nicht in wievielen Programmen ich mitlerweile vorbeigekommen bin wo man sowas im TOP-Include findet:
So macht die Konstante dann richtig viel sinn.Code: Alles auswählen.
* CONSTANTS gc_x VALUE 'X'. "T01xxxxxxx: wegen Umstellung xyz CONSTANTS gc_x VALUE 'V'.
Hihi - das hätte ich früher generell für absolut unnötigen Blödsinn gehalten( und wahrscheinlich ist das auch fast immer so ). Bis ich mal auf einem (4.5) System war, wo es beim Generieren eines Programms eine Fehlermeldung gab die etwa so hieß "Überlauf des Literalspeichers". Letztlich war damals wohl der Speicher im Kernel anders aufgeteilt und in diesem Programm ( Standard-SAP-Programm in dem ein wenig mehr in den Userexits einprogrammiert wurde als es wohl SAP selber für möglich gehalten hätte ) war dieser einfach ausgeschöpft. Der damals einzige Ausweg war Konstanten im Programm z.B. in Abfragen wie "IF t180-trtyp = 'H'" durch "IF t180-trtyp = charh" zu ersetzen ( Speichergewinn hier: 1 Byte ) um zu versuchen die letzten verbliebenen Bytes im Literalspeicher für dringend benötigte Zeichenketten freizuhalten.ralf.wenzel hat geschrieben:Dieser Kunde hatte TOP-Includes, bei denen erstmal das ganze Alphabet "durchkonstantiert" wurde (gc_a, gc_b, ....) und dann die Ziffern 0-9 per Konstante festgelegt wurden.
Wo ich so darüber nachdenke - wieder dasselbe Beispiel wie schon eben bei den Literalkonstanten angesprochen. Der Literalspeicher nahm auch die Namen von Unterroutinen mit auf! Das Resultat war, dass wir neue Formroutinen nur noch möglichst kurz benennen konnten bzw. ältere Formroutinen in kürzer Benamte umbenannt hatten, um auch hier Buchstaben zu sparen.JHM hat geschrieben:Die Unsitte FORMs nach Aufruf im Programm alphabetisch/nummerisch zu benennen, ohne der Form einen sprechenden Namen zu geben, die einem verrät, was sie genau macht, ist mir nur noch ein müdes Lächeln wert:Code: Alles auswählen.
FORM A001 USING ... ENDFORM. FORM B001 USING ... ENDFORM. FORM B002 USING ... ENDFORM. FORM C001 USING ... ENDFORM.
Das SAP früher mal mit weniger Resourcen auskommen mußte ist ja ok. Aber auch kurze Namen können sprechend seinblack_adept hat geschrieben:Das Resultat war, dass wir neue Formroutinen nur noch möglichst kurz benennen konnten bzw. ältere Formroutinen in kürzer Benamte umbenannt hatten, um auch hier Buchstaben zu sparen.
Versuch mal sprechende Namen für ein- oder zweibuchstabige Formroutinen zu finden. Hier können eigentlich nur sinnvolle Kommentare helfen.JHM hat geschrieben:Das SAP früher mal mit weniger Resourcen auskommen mußte ist ja ok. Aber auch kurze Namen können sprechend sein
Definitiv. Ich nenne meine Form_Routinen zum Beispiel GET_MARA und meistens kommentiere ich auch noch. Sicherheitshalber.black_adept hat geschrieben:Versuch mal sprechende Namen für ein- oder zweibuchstabige Formroutinen zu finden. Hier können eigentlich nur sinnvolle Kommentare helfen.JHM hat geschrieben:Das SAP früher mal mit weniger Resourcen auskommen mußte ist ja ok. Aber auch kurze Namen können sprechend sein