![]() |
Delphi-Version: 10.4 Sydney
Delphi’s Object Pascal Style Guide erneuert
War ja auch schon ein wenig in die Jahre gekommen:
![]() Blog von Marco Cantú: ![]() |
AW: Delphi’s Object Pascal Style Guide erneuert
Diese "Empfehlung" sollte Pflicht werden, ohne die der Compiler gar nicht erst arbeitet. Dann gäbe es weniger Gruselcode von irgendwelchen Hausaufgaben.
|
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
|
AW: Delphi’s Object Pascal Style Guide erneuert
<OT> Formatierung ist die eine Sache, wichtiger wäre, das LSP das gleiche Delphi/Object Pascal spricht bzw. versteht. Aber so langsam denke ich das werden wir nicht mehr erleben.</OT>
|
AW: Delphi’s Object Pascal Style Guide erneuert
Allen Recht kann man es auch nicht machen.
Ich hab einfach meine eigene Variante wann BEGIN-END oder so, und wie eingerückt wird, weil "ich" es einfach so besser lesen kann. Je nach Situation gibt es auch mal Unterschiede in der Einrückung. Und dann natürlich alles nochmal anders, bei Fremdcode oder auf Arbeit (jenachdem welche/wessen Unit/Funktion man dort anfasst und wie es da drumrum aussieht). Aber ja, vor allem für alle ohne "eigenen" Style, bzw. wenn sie noch garkeinen haben (oder der echt grauenhaft ist) und zum Reflektieren/Überdenken des eigenen Styles, ist so eine Vorgabe Ideenvorlage schon nicht schlecht. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
|
AW: Delphi’s Object Pascal Style Guide erneuert
Compiler, ErrorInsight, CodeInsight, HelpInsight, Refactoring, die Änderungen vom FormDesigner oder synchronisierte Codeändeungen aus den Projektoptionen, usw.
Also alles mit der selben Syntax aus'm LSP arbeitet. |
AW: Delphi’s Object Pascal Style Guide erneuert
So Copyrightzeugs/Unitbeschreibungen mach ich inzwischen ins PasDoc/XMLDoc, anstatt in einen komischen Kommentar.
Theoretisch könnte das dann im HelpInsight/CodeVervollständigung zum Unitnamen angezeigt werden (wenn es funktionieren würde) oder bei der Generierung einer Dokumentation oder Hilfe genutzt werden. |
AW: Delphi’s Object Pascal Style Guide erneuert
Cool, ich bin mal gespannt ob ich etwas finde über das man sich so fanatisch streiten kann wie Tabs vs. Spaces.
Edit: Zitat:
![]() 👿 AAAAaaaaaa PS: Wenn ich es beim Überfliegen richtig sehe dann habt ihr euch ja zum Glück auf eine doch sehr brauchbare Formatierungsvorgabe für anonyme Methoden geeinigt. Was man manchmal seht wie manche Leute die in den Code quetschen oder ausrichten, da rollen sich einem die Fußnägel hoch... |
AW: Delphi’s Object Pascal Style Guide erneuert
![]() Nee nee nee, das geht so. :angle2:
Delphi-Quellcode:
if DoSomething then
{$IFDEF MSWINDOWS}MessageBox{$ELSE}WriteLn{$ENDIF}('Hello'); Das mit den Anonymen mach ich auch schon so. Nur manchmal kommt die ProzedurDeklaration mit auf die selbe Zeile (wenn keine/wenige/kurze Parameter und die restliche Zeile davor auch kurz ist), aber das begin-end ist dennoch auf einer eigenen Zeile und immer eingerückt. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Wenn der Compiler es kompilieren kann, sollte es das Tooling auch können! frei nach Vincent Parret Um den Bogen zum Thema zu bekommen: Mir wäre ein funktionierender LSP bedeutend wichtiger als ein Style Guide! cu cg |
AW: Delphi’s Object Pascal Style Guide erneuert
Was ist denn mit dem "end;" vom "case" los. Das gehört mir persönlich immer auf die Ebene vom "case" und nicht wie im neuen Style Guide, wenn ein "else" Zweig vorhanden ist, eingerückt.
![]() Neuer Style Guide:
Delphi-Quellcode:
So mache ich das:
case ch of
'0': begin ... end; else ... end; // huch?
Delphi-Quellcode:
case ch of
'0': begin ... end; else ... end; |
AW: Delphi’s Object Pascal Style Guide erneuert
Ich rücke das ELSE genauso ein, wie oben die Werte, denn die gehören ja zusammen,
aber das letzte END kommt natürlich unters CASE. BEGIN-END bei den Werten rücke ich aber (meistens) nicht nochmal ein. BEGIN hinter : und END unter den Wert. Somit ist Code, egal ob mit oder ohne BEGIN-END oder im ELSE, auch immer auf der gleichen Ebene. Ein BEGIN hinter ELSE und dazu ein eigenes END ist ja optional, aber das schreib ich dennoch, wenn mehr als eine Zeile ... dann passt das mit der Einrückung auch gleich viel besser. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
|
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Zitat:
Logische Verknüpfungen möglichst separiert, mit vorangestelltem operator. Möglichst "luftiges" Design durch Spaces in () und [].
Delphi-Quellcode:
Obj1______________ := TObj1.Create;
Obj1.___Field1____ := True; Obj1.___Field2____ := False; // Obj1______________ := TObj1.Create; ObjNew2.Field3____ := True; ObjNew2.Field4____ := False; Obj1.___Liste[ 0 ] := 'null'; Obj1.___Liste[ 1 ] := 'eins'; if____________( Obj1.___Field1 =_ ObjNew2.Field1 ) ____and_____( ObjNew2.Field2 <> Obj1.___Field2 ) _// and_____( ObjNew2.Field1 <> Obj1.___Field2 ) //<== So kann man mal schnell Terme ein/ausschalten, und behält doch den Überblick ____and not ( Obj1__________ =_ ObjNew2_______ ) then begin end; Ja, das ist gewöhnungsbedürftig, aber der Compiler hat sich noch nie beschwert und die Lernkurve ist flach :stupid: Edit: Musste es mit ___ verunstalten, wg. der Forensoftware, damit man den Effekt sieht. |
AW: Delphi’s Object Pascal Style Guide erneuert
Nee, nach Punkten trenn ich nicht (keine Leerzeichen reingemischt, *1), aber dahinter richte ich bei mehreren Zuweisungen auch die := immer untereinander aus.
1) außer bei langen Ausdrücken ein Zeilenumbruch vor dem Punkt, also Punkt in neuer Zeile, damit man sieht dass es eine Fortsetzung ist (und natürlich eine Stufe eingerückt). |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
|
AW: Delphi’s Object Pascal Style Guide erneuert
Ausrichtung von Zuweisungen mache ich auch am ":=".
Bei mehrzeiligen Bedingungen weiche ich vom Standard ab:
Delphi-Quellcode:
Analog bei ähnlichen Konstrukten.
if bla1 and
bla2 and bla3 then begin ... end Da könnte mn noch diskutieren, ob die logische Verknüfung ("and" im Beispiel) in die neue Zeile kommt. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Delphi-Quellcode:
case ch of
'0': begin ... end; else ... end; |
AW: Delphi’s Object Pascal Style Guide erneuert
Eine wichtige Erkenntnis aus den internen Diskussionen um den Style Guide war übrigens: Wähle die Regeln so, dass der interne Formatter es umsetzen kann.
Ich bin mir gar nicht sicher, ob das für den neuen Style Guide überhaupt gilt. :gruebel: |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
also wie bei den Punkten, damit man sieht was die neue Zeile macht und nicht erst darüber hinten suchen zu müssen. Die Ausrichtung mit unterschiedlich langen AND und OR ist zwar bissl "hakelig", aber da kommt dann einfach ein Leerzeichen hinters OR. Klar, bei dir passen and und then natürlich optisch besser zusammen, aber auch wenn Andere auch das THEN auf eine neue Zeile unters IF machen, so bleibt es bei mit hinten (nach dem THEN, eventuell mit BEGIN-END, sieht man ja an der Einrückung, dass dort hinten ein THEN stehen muß) |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Kurze Labels:
Delphi-Quellcode:
Lange Labels:
case ch of
'0': begin ... end; '1': begin ... end; else ... end;
Delphi-Quellcode:
case aufzaehlungstyp of
atZiemlichLangerName: begin ... end; atAndererNochVielLaengererName: begin ... end; else ... end; |
AW: Delphi’s Object Pascal Style Guide erneuert
@Frickler: Ja, das geht so auch in Ordnung für mich. Mir war es halt wichtig zu zeigen wo mein "else" steht.
|
AW: Delphi’s Object Pascal Style Guide erneuert
Es wäre dann ja mal schön, wenn der Code-Formatter (Strg+D) nicht bei Inline-Variablen Zeilenumbrüche ergänzen würde. Das nervt mich so unglaublich. Früher war es eine Wohltat "Strg+D" zu hämmern.. aber das habe ich mir nur leider deshalb abgewöhnt.
Aus:
Delphi-Quellcode:
Wird:
var Zahl := 1;
Delphi-Quellcode:
Toll!
var
Zahl := 1; |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
|
AW: Delphi’s Object Pascal Style Guide erneuert
Situationsbedingte Ausnahmen/Abweichungen sind für so Automatiken aber auch nicht immer leicht.
Je nach umgebendem Code passe ich meine Formatierung in Nuancen teilweise etwas an (Leerzeichen, Zeilenumbruch und Einrückung) Beim VAR in Prozedurheadern und global ebenso mit Zeilenumbruch, aber als Inline natürlich auch einzeilig. z.B. bei "massenhaften" Parameterübersetzungen mach ich den Code direkt hinters THEN und THEN untereinander ausgerichtet, aber wenn nur 1 oder 2 solcher Zeilen, oder wenn das im IF länger, dann auch mit Zeilenumbruch nach dem THEN.
Delphi-Quellcode:
if A then Include(C, D); // bzw. C := C + [D]; oder sowas
if B then Include(E, F); ... |
AW: Delphi’s Object Pascal Style Guide erneuert
Also ich will auf jeden Fall eine Lösung, die komplett auf Knopfdruck funktioniert.
Notfalls würde ich auch mit ein paar Kleinigkeiten leben, die mir nicht ganz gefallen. Einiges kann man ja auch optional einstellbar machen. Auf keinen Fall würde ich irgendwas händisch zurecht schieben. Meinen Formatierer überarbeite ich gerade nochmal (läuft ganz gut). Ich will zwar genau zu dem Ergebnis kommen, das ich schon erreicht hatte aber mein jetziger Weg kommt mit weniger Spezialbehandlungen aus als der letzte und ermöglicht auch eine bessere Codevervollständigung und Sortierung. Eine Schwierigkeit ist z.B. dass ich auskommentierten Code als echten Code interpretiere und formatiere. Das Ausrichten von bestimmten Codestellen (z.B. ":=") untereinander will ich unbedingt haben. Das finde ich sehr übersichtlich und hilfreich. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Das Auge muss doch so unnötig lange Wege zurücklegen. Na ja, jeder Jeck ist anders. Ich habe Programmierer und Softwareentwickler noch nie verstanden, die von oben nach unten etwas ausrichten. Das ist keine Tabellenkalkulation mit Spalten. Es sind zeilenbasierte An- und Zuweisungen. Zeile fünf hat (visuell) nichts mit Zeile 24 zu tun.
Delphi-Quellcode:
Allein hier bekommt man doch voll die Krise, wenn Field4 umbenannt/refaktorisiert wird nach bspw. LongField4Name.
ObjNew2.Field3____ := True;
ObjNew2.Field4____ := False; Wird dann überall angefangen händisch (!) die Leerzeichen anzupassen? Wer bezahlt das? |
AW: Delphi’s Object Pascal Style Guide erneuert
Die meiner Meinung nach einfachste und beste Lösung ist, sich direkt die Schreibweise anzugewöhnen die von STRG+D vorgegeben wird.
Das mit den Leerzeichen, das ist der absolute Horror, schlimmer gehts nicht. |
AW: Delphi’s Object Pascal Style Guide erneuert
Liste der Anhänge anzeigen (Anzahl: 1)
Mein Formatierer macht das Blockweise (siehe Screenshot).
Optional könnte man z.B. noch regeln, dass Sprünge über eine bestimmte Anzahl (sehr geringe Einrückung zu sehr weiten Einrückungen) nicht toleriert werden:
Delphi-Quellcode:
Aktuell würden die ersten zwei Zeilen mit nach rechts ausgerichtet, was man aber durch eine Leerzeile verhindern könnte. Alternativ wäre wie gesagt auch eine Option möglich, die solche großen Sprünge verhindert.
I__: Integer;
IYY: Integer; ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ: Integer; IYYZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ______: Integer; Eine Ausrichtung untereinander von Hand würde ich auf keinen Fall machen aber eine solche Ausrichtung auf Knopfdruck finde ich nützlich. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
da wandert nicht viel über den Bildschirm. Darum geht es. Ausserdem sollen die Augen ja wandern, und nicht nur auf einen Punkt starren, darüber mache ich mir weniger Sorgen :stupid: Muss man nicht so machen, aber probier es halt einfach mal aus, nach einiger Zeit merkst Du die Vorteile. Ich benutze mittlerweile auch alle Indents 4 statt 2 (das kommt ursprünglich aus Java, glaube ich). Auch dass mach den Stil "luftiger", und die Umbrüche sind für das Gehirn viel schneller und leichter erfassbar. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Ich für mein Teil bin froh, dass ich die Wahl habe und bin definitiv mit einigen Vorgaben des Styleguides nicht einverstanden. (Den neuen habe ich mir aber noch nicht angesehen, vielleicht hat sich ja was verbessert.) |
AW: Delphi’s Object Pascal Style Guide erneuert
Formatierung als Teil der Syntax empfinde ich aber auch bissl "krank".
![]() Hab auch bissl Python lernen müssen, weil das als ScriptSprache in unserem ReportingSystem mit drin ist. Und wir hatten zuletzt mit Python4Delphi versucht es direkt einzubinden (noch nicht ganz fertig validiert), um den Aufruf der EXE zu entfernen und die Verbindung zu verbessern. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Embarcadero weiß schon sehr genau, warum es Style Guides und nicht dollymäßig Style Commandments veröffentlicht. Obwohl theoretisch völlig unbedeutend, da funktionell ohne Wirkung, erhitzen sich an der Formatierung regelmäßig die Gemüter. Die Programmiererzunft besteht halt tendenziell aus Leuten, die nicht nur eine ausgeprägte Meinung haben, sondern auch feste Überzeugungen hinsichtlich der Wertigkeit und der wünschenswerten allgemeinen Verbindlichkeit ihrer persönlichen Meinungen. Ich als Hobbyprogrammierer würde mich von Delphi abwenden, wenn die Style Guides technisch verbindlich gemacht würden. (Würde Emba wohl verschmerzen.) Ich bin angenehm überrascht, dass einige meiner Vorlieben auch von Profis geteilt werden. Und um TiGüs Frage zu beantworten: Ich habe mir für die Ausrichtung eigens ein kleines Programm geschrieben, das geht also ratzifatzi. Ich würde an Embas Stelle den Formatierer stark aufwerten und in ein eigenes, ausgewachsenes Programm stecken, das extrem benutzerfreundlich wäre. Ich habe den Verdacht, dass im Programmiergeschäft 40% der Arbeitszeit damit verbracht werden, fremden Code unter einer Flut von abwertenden Bemerkungen umzuformatieren. (Dieser Verdacht ist durch die Lektüre dieses Forums entstanden.) All die Zeit und das ständige Sich-Ereifern könnte man sich sparen: Jeder hat seine persönliche Vorlage parat, einmal STRG+D und der Code ist genau nach persönlichem Gusto. Gibt ja auch die Bibel in ganz verschiedenen Ausführungen, und da wird ja auch jeder selig. |
AW: Delphi’s Object Pascal Style Guide erneuert
Wenn die einzige Sorge im Code ist, ob da nun das end um 2 zu viel oder zu wenig eingerückt oder das begin am Ende der vorherigen Zeile steht oder in einer neuen, dann wäre das ja schon nahe an der Perfektion.
Fakt ist, dass der Code, der in Delphi mitgeliefert wird, durchaus sehr gut lesbar ist. Das hat aber in den letzten Jahren leider durch Nichtbeachtung des vorhandenen Guides abgenommen, was auch durch den Zukauf von Fremdcode (ich schaue euch an, FMX und FireDAC) und externe Entwickler für bestimmte Projekte entstand. Aber daran ist auch nicht nur die Formatierung schuld sondern oft auch die Gesamtarchitektur und verschwurbeltes Design und das ist viel wichtiger als ob da nun 2 oder 4 eingerückt wird, wenn das wenigstens konsistent ist. Das heißt, auch wenn öffentlich zur Verfügung gestellt, ist der Guide mehr für interne Zwecke und solche, die für Embarcadero Code erstellen. |
AW: Delphi’s Object Pascal Style Guide erneuert
Natürlich gibt es wichtigere Punkte bei der Programmierung als die Codeformatierung.
Aber wenn man ohne Aufwand eine "übersichtliche Formatierung" einstellen kann, dann sollte man das m.E. auch tun. Im Team muss man sich natürlich einigen, was "übersichtlich" ist bzw. sich getroffenen Regelungen unterordnen. |
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Dann könnte man einehn <summary> Kommentar über die Unit Deklaration selber schreiben und irgendwo im Uses das als XMLDOC Tooltip angezeigt bekommen. Grüße TurboMagic |
AW: Delphi’s Object Pascal Style Guide erneuert
Gibt es eine Erweiterung wie z. B. clang-format, die diesen Styleguide auch - im möglichen rahmen - anwendet?
|
AW: Delphi’s Object Pascal Style Guide erneuert
Zitat:
Muß ich mal nachsehn, ob es auch angezeigt wird. Was mir vor Kurzem aufgefallen war, wenn man den Oberen in eine Region packt, dann lässt sich auch die Region nicht folden, aber der eine ///-Kommentar, da ganz oben, kann das inzwischen, aber nur innerhalb der Region, nicht einzeln und die Region selber nicht. Nur mache ich keine Regionen mehr, wobei ... Ohne ein gekauftes DocumentationInsight (die MiniEmbaVersion wird ja leider nicht mehr ausgeliefert) macht es keinen Spaß alles doppelt zu schreiben, denn einen bisher unbemerkten Vorteil hatte die Region doch. * ursprünglich war sie nur, weil /// nicht gefoldet wurde * ist jetzt aber für eine Kurzvorschau immernoch nützlich ... nja, noch ... hoffe ich bald ![]() |
AW: Delphi’s Object Pascal Style Guide erneuert
Warum baut Emba nicht endlich einen gut funktionierenden Code Formatierer? Die Jetbrains IDEs, z.B. für go, formatieren den Code beim Tippen automatisch. Sieht immer gleich und top aus, sehr bequem und hilfreich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz