Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Formatierung
FinnO - So 24.05.09 20:00
Titel: Formatierung
Wie ist dieser Code richtig zu formatieren?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if PointInRect(Point(X,Y), Rect(width div 2-200, height div 2-75, width div 2 + 200, height div 2 + 75) ) then begin ... end; |
(von der Anfangseinrückung mal abgesehen, ist reinkopiert ;))
jaenicke - So 24.05.09 20:12
Was heißt richtig? Ich würde es so machen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| if PointInRect(Point(X, Y), Rect(Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75)) then begin ... end; |
Ich überblicke es so am schnellsten und es ist nicht so ausgebreitet. Ich glaube so sollte es auch nach dem Styleguide passen:
http://dn.codegear.com/article/10280 (englisch)
http://www.delphi-treff.de/delphi-styleguide/ (deutsch)
API - So 24.05.09 20:13
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if PointInRect(Point(X, Y), Rect(Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75)) then begin ... end; |
ODER
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if PointInRect(Point(X, Y), Rect(Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75)) then begin ... end; |
jaenicke - So 24.05.09 20:14
Beides finde ich nicht so gut, wenn, dann würde ich beim ersten eins weiter einrücken nach dem Rect, denn das gehört ja da hinein.
Beim zweiten sind ausgerechnet x- und y-Richtung getrennt (bzw. die nicht zusammenhängenden in einer Zeile). ;-)
BenBE - Mo 25.05.09 11:36
Also mein Favorit ist das hier:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if PointInRect( Point(X, Y), Rect( Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75 ) ) then begin ... end; |
Siehe Econos Coding Standard. Grundregeln nach denen ich dabei (abweichend vom Econos Standard) gehe sind grob folgende (nicht vollständig):
- Sinngemäße Gliederung
- Überschaubare Informationshäppchen
- Keine Mischung von Formatierungen (wenn ich Argumente auf einer Zeile gruppiere, dann entweder alle, oder alle einzeln)
- Semantische Tiefen-Gliederung: Bei Unter-Aufrufen erfolgt eine Unter-Gruppierungsebene, sofern nötig
- Ausnahmen bestätigen diese Regeln ;-)
Edit: OT: Auf wie viele Varianten wir es wohl schaffen werden?
FinnO - Mo 25.05.09 12:50
BenBE hat folgendes geschrieben : |
Also mein Favorit ist das hier:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if PointInRect( Point(X, Y), Rect( Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75 ) ) then begin ... end; |
|
warum denn dann nicht wenigstens so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if PointInRect( Point(X, Y), Rect( Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75 ) ) then begin ... end; |
frei nach C/C++?
jaenicke - Mo 25.05.09 12:52
Das zieht den Code aber extrem in die Breite, das ist auch nicht so schön finde ich.
BenBE - Mo 25.05.09 13:13
Jep, genau deshalb: Weil der Code damit unnötig in die Breite gezogen wird. Bei der Einrückung mit den Klammern\Parametern geht es darum, die Zugehöörigkeit der Parameter anzuzeigen, nicht die einzelnen Klammern herauszuheben; die sind Beiwerk. Wichtiger ist es, dass der Code eine Gliederung bekommt.
Man kann IOCCC-Code schreiben, oder aber sich bemühen, mit Struktur und Übersicht eine Gliederung zu schaffen. Wenn man dazu horizontal scrollen muss, läuft etwas falsch.
Aya - Mo 25.05.09 13:18
Delphi-Quelltext
1: 2: 3:
| if PointInRect(Point(X, Y), Rect(width div 2 - 200, height div 2 - 75, width div 2 + 200, height div 2 + 75)) then begin ... end; |
alles andere finde ich furchtbar unübersichtlich.. :shock:
Aya~
jaenicke - Mo 25.05.09 13:19
Alles in eine Zeile zu schreiben macht ggf. horizontales Scrollen notwendig. :shock:
Das macht einen Code unlesbar oder verhindert zumindest, dass man ihn schnell überblicken kann.
Bei mir jedenfalls ist das Codefenster auf etwa eine Breite von 100 Zeichen eingestellt. Alles was drüber geht muss gescrollt werden.
zuma - Mo 25.05.09 13:24
Ich finde die erste Variante von FinnO am übersichtlichsten (lediglich Leerzeichen bei -, genau wie bei +). Dort sieht man auf einen blick, welche Parameter wozu gehören bzw. wie sie berechnet werden.
Aya - Mo 25.05.09 13:24
jaenicke hat folgendes geschrieben : |
Alles in eine Zeile zu schreiben macht ggf. horizontales Scrollen notwendig. :shock:
Das macht einen Code unlesbar oder verhindert zumindest, dass man ihn schnell überblicken kann.
Bei mir jedenfalls ist das Codefenster auf etwa eine Breite von 100 Zeichen eingestellt. Alles was drüber geht muss gescrollt werden. |
Da ich öffters mal Fremdcode in die finger bekomme der auch so formatiert ist wie ihr das vorschlagt weiß ich - zumindest bei mir - aus erfahrung das ich da NICHTS erkenne.. da sitz ich immer ne gefühlte ewigkeit davor bis ich raushab was da wie zusammen gehört.. meist mach ich es mir dann einfach lösch alle zeilenumbrüche so das es in einer zeile steht ;)
Klar es ist gewohnheit, aber ich für meinen Teil habe solche Zeilen recht selten (nochdazu nen Widescreen Monitor ;) ) und wenn ich mal seitlich scrollen muß, was stört das schon? Für mich ist es so auf den ersten blick ersichtlich was wie wozu gehört..
Nochdazu finde ich es sehr unübersichtlich wo das if anfängt und wo dann das then dazu kommt. Wenn man das in nem text-editor ohne Syntax-Highlighting anschaut sucht man da erstmal in den Zeilen das then.
Aya~
BenBE - Mo 25.05.09 13:24
@Aya: Dann aber bitte schön schon das Begin nach dem Then auf eine eigene Zeile ... Das erhöht die Übersicht ;-)
Hinweis für Allergiker: Dieser Beitrag könnte Spuren von Ironie oder Sarkasmus enthalten, die bei sensiblen Gemütern zu allergischen Reaktionen führen könnten.
Aya - Mo 25.05.09 13:27
BenBE hat folgendes geschrieben : |
| @Aya: Dann aber bitte schön schon das Begin nach dem Then auf eine eigene Zeile ... Das erhöht die Übersicht ;-) |
Finde ich auch nicht ;)
a) Ist das eine zeile unnötig verschwendet.
b) Wozu..? :p Es ist doch offensichtlich das dannach ein begin steht wenn der nachfolgende code eingerückt ist..
Wenn jetzt jemand kommt vonwegen "Jaaa, aber wenn man das begin dann wegmacht und vergisst das einrücken anzupassen bla".. sag ich nur - "Passiert mir NIE" ;)
Aber auch hier.. jeder wie er es gewohnt ist. (Ich schreibe auch bei C++ die geschweifte klammer direkt in die zeile vom If.. ich finde es furchtbar sonst xD )
Aya~
Yogu - Mo 25.05.09 13:39
Aya hat folgendes geschrieben : |
| Ich schreibe auch bei C++ die geschweifte klammer direkt in die zeile vom If.. ich finde es furchtbar sonst xD |
Geschweifte Klammern kommen bei mir auch immer in die gleiche Zeile. Aber das Delphi-
begin ist mir dafür einfach zu lang.
In Delphi sieht Code bei mir immer so aus:
jaenicke hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5:
| if PointInRect(Point(X, Y), Rect(Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75)) then begin ... end; | |
Wobei nach 80 Zeichen ein rechter Rand eingeblendet ist, den ich auch nie überschreite. So habe ich bei meinem 22"Breitbild richtig schön viel Platz für Werkzeugfenster und außerdem ist 80 Zeichen eine Art "genormter" Rand, den man auch sonst oft findet. Dann passt das schön. Und arg unübersichtlich ist das gar nicht,
Aya ;)
baka0815 - Mo 25.05.09 13:40
Ich finde es im Falle Delphi übersichtlicher
Delphi-Quelltext
1: 2: 3: 4:
| if (...) then begin ... end; |
Was Java angeht, schreibe ich jedoch auch lieber
da ich die einzelne Klammer (was bei C# scheinbar Standard ist) furchtbar finde.
Da man bei Delphi das
begin ... end nicht so schön "zusammenhängend" markieren kann wie die Klammern in Java (Eclipse), finde ich das mit der Extra-Zeile übersichtlicher.
Yogu hat folgendes geschrieben : |
| [...] und außerdem ist 80 Zeichen eine Art "genormter" Rand, den man auch sonst oft findet |
Das liegt daran, weil das Standard DOS-Fenster 80 Zeichen breit ist und ein Drucker im Textmodus auch eine Breite von 80 Zeichen hat, bevor umgebrochen werden muss.
jaenicke - Mo 25.05.09 13:44
Aya hat folgendes geschrieben : |
| "Passiert mir NIE" ;) |
Ich schreibe den Code normalerweise zur Veröffentlichung oder Verwendung durch andere, da kann ich so ja nicht argumentieren.
Aya hat folgendes geschrieben : |
| nochdazu nen Widescreen Monitor ;) |
Ich auch, aber den nutze ich auch aus. Siehe hier oder Anhang: :D
[url=
http://www.sj-berlin.de/service/df/screenshots/BDS2006_Desktop.png]
[/url]
jaenicke - Mo 25.05.09 13:46
baka0815 hat folgendes geschrieben : |
| Da man bei Delphi das begin ... end nicht so schön "zusammenhängend" markieren kann wie die Klammern in Java (Eclipse), finde ich das mit der Extra-Zeile übersichtlicher. |
Das geht ja mit CnWizards z.B., da wird das (siehe Screenshot) auch visuell verdeutlicht, aber trotzdem schreibe ich es in die gleiche Ebene.
baka0815 - Mo 25.05.09 13:47
jaenicke hat folgendes geschrieben : |
baka0815 hat folgendes geschrieben : | | Da man bei Delphi das begin ... end nicht so schön "zusammenhängend" markieren kann wie die Klammern in Java (Eclipse), finde ich das mit der Extra-Zeile übersichtlicher. | Das geht ja mit CnWizards z.B., da wird das (siehe Screenshot) auch visuell verdeutlicht, aber trotzdem schreibe ich es in die gleiche Ebene. |
Danke!
Wollte dich eh gerade fragen, wie du das so schön farblich angezeigt kriegst. ;)
Tilo - Mo 25.05.09 16:39
Ich steuer dann auch mal eine Variante bei.
Basis ist folgendes:
BenBE hat folgendes geschrieben : |
Also mein Favorit ist das hier:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if PointInRect( Point(X, Y), Rect( Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75 ) ) then begin ... end; |
|
daraus wird:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if PointInRect( Point(X, Y), Rect( Width div 2 - 200, Height div 2 - 75, Width div 2 + 200, Height div 2 + 75 ) ) then begin ... end; |
Ich spare lieber etwas Zeilen.
Leider geht das in Delphi nicht so gut wie z.B. in Java.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!