AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formatierung langer Terme

Ein Thema von Cöster · begonnen am 1. Mär 2007 · letzter Beitrag vom 2. Mär 2007
Antwort Antwort
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

Formatierung langer Terme

  Alt 1. Mär 2007, 16:56
Hi!

Bei langen Termen mit vielen Klammern stellt sich mir immer wieder die Frage: Wo soll ich am besten Leerzeichen und Zeilenbrüche einbauen, damit der Code möglichst gut lesbar ist?

Hier mal ein Beispiel:

Delphi-Quellcode:
edtVx.Text := FloatToStr(Ord((Angle < 90) or (Angle > 270)) *
   Sqrt(Sqr(TotalSpeed) / (Sqr(Tan(DegToRad(Angle))) + 1)));
Ich hab damit schon viel damit rumprobiert, eine Möglichkeit wäre z.B. auch diese:

Delphi-Quellcode:
edtVx.Text := FloatToStr( Ord((Angle < 90) or (Angle > 270)) *
   Sqrt(
      Sqr(TotalSpeed) /
      ( Sqr(Tan(DegToRad(Angle))) + 1 )
   )
);
Wie würdet ihr diesen Befehl (oder allgemein solche Terme) formatieren?
Würdet ihr Sqr(Ausdruck) vll auch durch Ausdruck * Ausdruck ersetzen oder DegToRad(Angle) durch Angle * Pi / 180? Oder statt "Ord" ein paar if-Abfragen?
Ich hab bisher noch nichts gefunden, was mich überzeugt?
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#2

Re: Formatierung langer Terme

  Alt 1. Mär 2007, 17:27
Also wenn du unbedingt umbrechenn willst, dann am besten Konsquent.
Klammern würde ich so umbrechen, wie es in Delphi mit begin und end üblich ist:
Delphi-Quellcode:
edtVx.Text := FloatToStr
  (
    Ord((Angle < 90) or (Angle > 270)) *
     Sqrt
     (
        Sqr(TotalSpeed) /
       (
         Sqr(Tan(DegToRad(Angle))) + 1
       )
     )
  );
Genau wie bei Delphi's begin und end siehst du sofort jede öffnende und schliessende Klammer und du kannst eine fehlende Klammer sofort identifizieren.

EDIT: Mit Hilfe von Delphi's Klammerhervorhebung solltest du dann immer 2 Klammern, die auf einer Ebene stehen gleichzeitig hervorheben können. Wenn das nicht klappt wiesst du sofort, dass was falsch ist und kansnt anfangen die Unterteile auch noch in extra-Zeilen umzubrechen, bis du den Fehler hast...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Formatierung langer Terme

  Alt 1. Mär 2007, 17:45
Das ist doch nicht übersichtlich...
Delphi-Quellcode:
edtVx.Text := FloatToStr( Ord((Angle < 90) or (Angle > 270)) *
   Sqrt(
      Sqr(TotalSpeed) /
      ( Sqr(Tan(DegToRad(Angle))) + 1 )
   )
);
So würde ich das übersichtlich gestalten.
Delphi-Quellcode:
...
Var
  Vx, Ts2, TanAngle2 : Double;
  Mult : Integer;

Begin
  Ts2 := Sqr (TotalSpeed);
  TanAngle2 := 1 + Sqr (Tan (DegToRad (Angle)));

  If (Angle < 90) or (Angle > 270) Then
    Mult := 1 // Wieso???
  else
    Mult := 0;

  vx := Mult *Sqrt(Ts2/TanAngle2);
  edtVx.Text := FloatToStr(vx);
...
(Falls das korrekt von mir entwirrt wurde ).
Und richtig übersichtlich wird es, wenn du noch dazuschreibst, was das soll. Wie willst Du denn eigentlich bei deinem Stil Fehler finden?

Und denk jetzt nicht, das das ja total langsam wird.....
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Formatierung langer Terme

  Alt 1. Mär 2007, 18:26
@yankee: Hm, dann gehn ja noch mehr Zeilen für einen Befehl drauf

Zitat von alzaimar:
(Falls das korrekt von mir entwirrt wurde ).
Joa, aber ich hab selbst nen Fehler in meinen Code gehauen Aus irgendeinem Grund dachte ich nämlich, dass Ord(False) = -1 wäre.

Zitat von alzaimar:
Und denk jetzt nicht, das das ja total langsam wird.....
Wird von der Geschwindigkeit wohl gar keinen Unterschied machen, weil nach der Übersetzung in ASM ja sowieso jeder Befehl höchstens einen Operator enthält.

Zitat von alzaimar:
Das ist doch nicht übersichtlich...
Ich hatte mir bei den Umbrechungen gedacht, dass der Zähler dann über dem Nenner steht. Aber ganz überzeugt war ich davon ja auch nicht.

Mein aktueller Favorit ist jetzt:

Delphi-Quellcode:
var
   vx: Extended;
begin
   {...}
   vx := Sqrt( Sqr(TotalSpeed) / (Sqr(Tan(DegToRad(Angle))) + 1) );
   if (Angle > 90) and (Angle < 270) then
      vx := -vx;
   edtVx.Text := FloatToStr(vx);
   {...}
Wenn ihr noch weitere Ideen habt, schreibt sie hier rein.
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#5

Re: Formatierung langer Terme

  Alt 1. Mär 2007, 19:05
Zitat von Cöster:
@yankee: Hm, dann gehn ja noch mehr Zeilen für einen Befehl drauf
Stimmt, wenn du den Quelltext dann ausdruckst ist das eine enorme Waldverdingsung.

Ich aber solange du das Zeugs nur auf dem Bildschirm hast, solltest du mit den Zeilen nicht sparsam sein.
Ich kann den Drang wenige Zeilen zu verbrauchen zwar nachvollziehen (habe ich auch manchmal), aber begrünbar ist es eigentlich nicht. Nagut, macnhaml muss man elend viell scrollen.

Aber sonst mache die Kosntrukte eben nur so zum debuggen und schmeisse sie am Ende wieder in eine Zeile. So amche ich es meistens auch.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Formatierung langer Terme

  Alt 2. Mär 2007, 06:51
@Cöster: Kann man so stehen lassen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz