Autor Beitrag
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: So 24.05.09 20:00 
Wie ist dieser Code richtig zu formatieren?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.05.09 20:12 
Was heißt richtig? Ich würde es so machen:
ausblenden 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:
dn.codegear.com/article/10280 (englisch)
www.delphi-treff.de/delphi-styleguide/ (deutsch)
API
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 24.05.09 20:13 
ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 25.05.09 11:36 
Also mein Favorit ist das hier:

ausblenden 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?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
FinnO Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 25.05.09 12:50 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Also mein Favorit ist das hier:

ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 25.05.09 13:18 
ausblenden 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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 25.05.09 13:24 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 25.05.09 13:27 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
@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~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 25.05.09 13:39 
user profile iconAya hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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, user profile iconAya ;)
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mo 25.05.09 13:40 
Ich finde es im Falle Delphi übersichtlicher
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if (...) then
begin
  ...
end;


Was Java angeht, schreibe ich jedoch auch lieber
ausblenden C#-Quelltext
1:
2:
3:
if (...) {
  ...
}

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.

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
[...] 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 13:44 
user profile iconAya hat folgendes geschrieben Zum zitierten Posting springen:
"Passiert mir NIE" ;)
Ich schreibe den Code normalerweise zur Veröffentlichung oder Verwendung durch andere, da kann ich so ja nicht argumentieren.

user profile iconAya hat folgendes geschrieben Zum zitierten Posting springen:
nochdazu nen Widescreen Monitor ;)
Ich auch, aber den nutze ich auch aus. Siehe hier oder Anhang: :D

[url=www.sj-berlin.de/ser...BDS2006_Desktop.png]user defined image[/url]
Einloggen, um Attachments anzusehen!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 25.05.09 13:44 
user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
[...] 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.

Ah, man lernt nie aus :think:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 13:46 
user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mo 25.05.09 13:47 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
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. ;)