![]() |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Abschliessend vielleicht noch was ChatGPT dazu sagt:
Zitat:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
Zitat:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Rollo62 sprach ja in Beitrag #4 von "Antipattern". Da dachte, schau mal nach....
![]() Für den Nachmittag vorm Feiertag vielleicht genau richtig zum Lesen. Das "Antipattern", am Anfang einer Methode mit if-then und einem exit dann rauszuspringen setze ich übrigens auch gerne ein. Zum Thema: Ein break im Case-Konstrukt habe ich noch nie vermisst. |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Allerdings, schöne zusammengefasst auf der Seite.
Zitat:
Denn ich nutze das "GUARD" Pattern sehr ausgiebig, was ich auch mit "negative Logic" benenne. Also statt immer nur bei positiv ins nächste if-then verzweigen, erzeugt oft sehr unübersichtliche Strukturen. Während ein "GUARD" mit "negativer Logik" am Anfang einer Methode diese sicher absichert und im Folgenden die eigentlich wichtigen Abläufe sehr sauber darstellt. Das habe ich zum Beispiel auch in anderen Sprachen sehr positiv wahrgenommen, dass dies die Methoden ordentlich aufräumen kann. Am Besten mal selber eine zeitlang ausprobieren, denn der positive Effekt stellt sich schnell ein. Nicht alle "AntiPattern" müssen direkt immer in der Hölle enden :-D |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
außen ein Try-Except drumrum und dann ABORT statt BREAK. :duck:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
|
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Warum seid ihr so versessen auf diese Guard am Anfang einer Methode?
Entweder es ist eine einfache Prüfung, dann hat man höchstens eine Ebene mehr in der Verschachtelung oder es sind viele Prüfungen erforderlich, dann macht man eine Function davon und hat wieder nur eine Ebene mehr. Ich habe dieses Anti-Pattern noch nie gebraucht und ich halte meinen Code für sehr gut lesbar. Meine Kollegen haben sich zumindest noch nie darüber beschwert und ich bezweifle, dass die Angst vor mir haben. :lol: Zum Break im Case: Das ist Delphi/Pascal und nicht C. Niklaus Wirth hat es so definiert. Dass es auch anders geht, steht außer Frage. Ich sehe aber keinen ernsthaften Grund, warum das notwendig sein sollte. Da gibt es andere Einschränkungen im Case, die mich mehr nerven. Z.B. die Beschränkung auf ordinale Typen. |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Wobei das auch schon im Basic so war (ohne Break), sowie auch COBOL (außer dass dort das CASE noch EVALUATE hieß), Algol und anderen Delphi/Pascal-Vorfahren.
Also eigentlich war es garnicht seine Idee. Joar, Strings wären auch mal was.
Delphi-Quellcode:
uses System.StrUtils, Vcl.Dialogs;
type TTheCase = (blubb, blob, wuppdi); const cTheCase: array[TTheCase] of string = ('blubb', 'blob', 'wuppdi'); procedure TForm1.FormCreate(Sender: TObject); begin var S := InputBox(Application.Title, 'Was: ' + string.join(' ', cTheCase), 'mähhh'); case TTheCase(IndexStr(S, cTheCase)) of blubb, blob: ShowMessage('Juhu: ' + S); wuppdi: ShowMessage('Hihooo: ' + S); else ShowMessage('Nööö: ' + S) end; end; |
AW: case .. of kann kein break - Gibt es dafür einen rationalen Grund?
Zitat:
dann kann ich ja genauso mit "Versessenheit" argumentieren, wenn man das ums Verrecken niemals nicht benutzen will :lol: Ob Du die Komplexität nun hinter Funktionen versteckst, oder nicht, das Ergebnis bleibt das Gleiche. Jedenfalls sehe ich durch negative Logik eine deutliche Verbesserung der Lesbarkeit und Code-Verständlichkeit, als wenn ich erst in zig Funktionen reinspringen und nachsehen müsste. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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