![]() |
Syntax-Frage (if, else begin und end)
Hallo, ich habe mir in den letzten Zwei Jahren einige Bücher über Delphi und die Programmierung damit
durchgelesen. Viele Autoren verwenden meist nie begin und end. z.B. bei einer if else- Abfrage. Bei mir ist es jetzt so, da wo man kein begin und end braucht, verwende ich es trotzdem:
Delphi-Quellcode:
In dem Fall könnte man das begin-end weglassen.
if TestVariable = True then
begin // Eine Codezeile end else begin // Eine weitere Codezeile end; Meine Frage: Ist das eigentlich FALSCH was ich da mache? |
Re: Syntax-Frage (if, else begin und end)
Nein, warum sollte es falsch sein? eine Sequenz besteht entweder aus einem einzelnen Befehl oder wird von begin..end umschlossen.
|
Re: Syntax-Frage (if, else begin und end)
Ne falsch is das nicht, nur etwas umständlich, wenn du jeweils nur eine Anweisung hast, brauchst du keinen begin und end block und du kannst auch schreiben:
Delphi-Quellcode:
if bedingung then eineanweisung(mitparametern) else eineandereanweisung(mitparametern); |
Re: Syntax-Frage (if, else begin und end)
Das ist mir klar ;)
Aber angenommen unter dem else ohne begin und end kommen noch viele weitere Codezeilen. Dann finde ich es überichtlicher das, auch wenn es nur eine Zeile ist, es einzuschließen |
Re: Syntax-Frage (if, else begin und end)
Deshalb nehem ich normalerweise auch immer begin..end
|
Re: Syntax-Frage (if, else begin und end)
Zitat:
Auch ich verwende grundsätzlich beginn..end da man dann schneller eine paar Anweisungen ergänzen kann. Ausserdem finde ich, dass es, korrekt eingerückt, "schöner" aussieht. Ohne begin..end "hängen einige Zeilen dann immer so unmotiviert in der Gegend rum :) |
Re: Syntax-Frage (if, else begin und end)
Ich nehme gerne den begin/end-Block auch für nur eine Anweisung, da es für den Fall einer Erweiterung um weitere Zeilen einfacher ist. Letztendlich ist es natürlich nicht falsch und Geschmacksache.
|
Re: Syntax-Frage (if, else begin und end)
Moin Zusammen,
also ich habe es mir so angewöhnt: Wenn nur der then-Zweig in Frage kommt, und dort nur eine Anweisung folgt, kommt sie direkt hinter das then, also in die gleiche Zeile. Ausnahme: Die Zeile wird dann zu lang, sprich, unübersichtlich. Dann mache ich es auch bei einer Zeile so, wie bei mehreren. Werden mehrere Zeilen, oder auch ein else-Zweig benötigt benutze ich bei beiden immer begin/end Also:
Delphi-Quellcode:
// Nur then, eine Anweisung, kurze Zeile
if <Bedingung(en)> then <Anweisung> // Nur then, eine Anweisung, lange zeile oder mehrere Anweisungen if <Bedingung(en)> then begin <Anweisung(en)> end; // Auch else if <Bedingung(en)> then begin <Anweisung(en)> end else begin <Anweisung(en)> end; @Tommy: Was Du aber in keinem Falle machen solltest (auch wenn es nicht direkt falsch ist): Vergleiche einen boolschen-Ausdruck niemals auf true oder false. Also:
Delphi-Quellcode:
Zum einen ist diese Variante i.d.R. lesbarer (vorausgesetzt die Bezeichner wurden entsprechend benannt ;-)), zum anderen kann man sich gerade bei = true eine Problem einhandeln.
// statt = true
if Ausdruck then ... // statt = false if not Ausdruck then ... true und false sind einfach nur Konstanten mit den Werten 1 (true) und 0 (false). Üblicher Weise ist der Rückgabewert einer boolschen Funktion als 0 bei false (ok, passt) aber als <> 0 für true anzusehen. Wenn eine Funktion also -1 oder 2 (mal als willkürliche Beispiele gewählt) als Rückgabewert liefert (um true zu signalisieren), und Du mit true (also 1) vergleichst, erhältst Du nicht das gewünschte Ergebnis. |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
|
Re: Syntax-Frage (if, else begin und end)
Zitat:
Danach wäre Deine Version falsch. |
Re: Syntax-Frage (if, else begin und end)
Zitat:
|
Re: Syntax-Frage (if, else begin und end)
Moin Raven,
Zitat:
|
Re: Syntax-Frage (if, else begin und end)
Zitat:
Wenn Du in MEINEM Team arbeiten würdest, müsstest Du halt den StyleGuide der Firma nehmen. Zufälligerweise habe ich den verfasst. Und darin sind wir stark an Borland angelehnt. "Jeder darf seinen eigenen Stil verwenden, sofern dieser sich mit meinem Stil vereinbaren lässt." |
Re: Syntax-Frage (if, else begin und end)
Es gibt Firmen, die nutzen wieder ganz andere Styleguides. Von dem her ist es eigentlich egal, welchen Styleguide Christian nutzt. Dass man sich in Firmen an den jeweiligen Styleguide anpassen muss, sollte selbstverständlich sein. ;)
Aber das gehört nicht zum Thema und Diskussionen darüber gab's hier schon einige. :) |
Re: Syntax-Frage (if, else begin und end)
Ist ist ja so, wenn man ein Progrämmchen baut das man hier und da was Ändert.
Aus diesem Grund schreib ich meinerseitz auch ab und zu einzelne Anweisungen in einen Begin/End -Block. Es könnte ja noch etwas dazu kommen. Wen das Programm Fehlerfrei läuft und sonst alle Unreinheiten raus sind, geht es dann an die Codeoptimierung. Dabei fallen dann solche sachen wie eine Zeile in einem Anweisungsblock weg. |
Re: Syntax-Frage (if, else begin und end)
Hallo,
ich bin der gleichen Meinung wie turboPASCAL. Was noch eine Rolle spielt, wäre das Debuggen. if () then Anweisung lässt sich nicht so gut debuggen, weil Breakpoints zeilenbezogen sind. if () then Anweisung Hier kann ich den Breakpoint auf "Anweisung setzen". Da ich die Formatierung nicht so schön finde, nehme ich immer begin end, zumal ich beim end noch als Kommentar reinschreibe, wofür das end ist. if i>1 then begin end; { if i>1 then } gerade bei längeren Code lässt sich dass besser lesen, vor allem wenn man der Code gerade übersprungen wird, dann muss man nicht "nach oben blättern", um zu sehen, was denn im if stand. Heiko |
Re: Syntax-Frage (if, else begin und end)
Zitat:
...:cat:... |
Re: Syntax-Frage (if, else begin und end)
:stupid: Eine Lesbarkeit nach X-Ünftig Jahren.
An sich nix, ich mache en nur schon seit ich mit Basic zu tun habe/hatte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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