![]() |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
Außer maximaler Verwirrung hat das doch keine Vorteile, außer vielleicht wirklich auf Assembler-Ebene, wo dann z.B. ein zugewiesener Wert direkt weiterverarbeitet werden kann, der schon im Register ist, oder sowas. Man muss dabei vielleicht Bedenken, dass diese Syntax wirklich aus Zeiten kamen, als 1024 Byte noch ein Riesenspeicher war, und als noch um jedes Bit mit Säbeln und Morgenstern hart gekämpft wurde. :-D |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Ihr kennt bestimmt die Anekdote mit den Russen und C ... ?
Einige Verschwörer denken ja bis heute, das C entwickelt wurde, um den technischen Fortschritt der Federation (mit Luna, Lika und Gagarin) zu bremsen. Und weil die Russen als erstes Bunt TiWi hatten, sollte das mit den in den USA gestarteten Gemini Projekte (also die bemante Mondbesteigung) ausgeglichen werden. |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Nee, glaube ich nicht.
IT Nerds waren schn immer auf ihrem Paralleluniversum in ihrer Parallelwelt unterwegs, da zählen Ländergrenzen oder Staatszugehörigkeiten einfach nichts. Es ist wie eine große Familie, Sternenübergreifend. |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
Delphi-Quellcode:
Ich finde es aber immer besser, wenn man einzelne Befehle auch separat schreibt, damit es übersichtlicher ist. Insofern würde ich das ohnehin nicht zusammenfassen wollen. Also so nach dem Motto:
CallResult := CallAPI(...);
if CallResult = 0 then Result := ... else raise ESevereError.Create('Fehlercode: ' + CallResult.ToString);
Delphi-Quellcode:
Theoretisch wäre das mit Pascal-Syntax durchaus umsetzbar, ohne dass es dort Mehrdeutigkeiten gäbe. Die automatische Umwandlung des Zahlenwerts in einen Boolean wäre noch zusätzlich nötig. Sonst müsste es so gemacht werden:
if CallResult := CallAPI(...) then
raise ESevereError.Create('Fehlercode: ' + CallResult.ToString) else Result := ...
Delphi-Quellcode:
Wie gesagt, ich würde es nicht wollen. ;-)
if (CallResult := CallAPI(...)) > 0 then
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Niklaus Wirth schrieb vor einigen Jahren:
Zitat:
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Aber fehlt da nicht ein n und e?
|
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
auch wenn dies nicht immer absolut notwendig ist. Das erspart über implizierte logische Zuordnungen nachzudenken und legt die Berechnung so dar, wie es geplant ist. Zum Verhindern von blöden Flüchtigkeitsfehler und der besseren Zuordnung logischer Zusammenhänge ist das eine gute Sache. Hier mal ein Extrembeispiel:
Delphi-Quellcode:
vs.if ....Assign(......FClass ) and ......(......FClass.CanUse ) and ......(.(....FClass.ValueA .............+ ( FClass.ValueB * FClass.ValueC ) ). = 42 ) then begin end;
Delphi-Quellcode:
Wo kann man logische Fehler wohl besser erkennen?if Assign(FClass) and FClass.CanUse and (FClass.ValueA+FClass.ValueB*FClass.ValueC=42) then begin end; Natürlich versuche ich das weiter zu entflechten durch negative Logik und Guards
Delphi-Quellcode:
Ok, das ist sicher extremer als ich das aktuell mache, aber größtenteils Geschmackssache und Philosophie ...if not Assign( FClass ) then begin Exit; end; if not FClass.CanUse then begin Exit; end; if (.....FClass.ValueA + ( FClass.ValueB * FClass.ValueC ) ) = 42 then begin end; Soll Jeder machen, wie er meint, was für ihn Vorteile bringt. Für mich steht eine übersichtliche Formatierung an erster Stelle, gerade weil Logik so mehrdeutig und verheddert sein kann. :stupid: |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Zitat:
schreiben NOT wie eine Funktion (mit Klammer und ohne Leerzeichen) und nochmal 'ne Klammer drumrum und boar eh.
Code:
if (Assign( (FClass))) )
and ( (not(FClass.CanNotUse)) ) and ( ( (FClass.ValueA) + ( (FClass.ValueB) * (FClass.ValueC) ) ) = 42 ) then begin end; Ach ja, AND, OR und + am Zeilenende :wall:
Code:
Vorne ist es immer an der selben Stelle und als Erstes (nicht sonstwo im Text hinten versteckt) ... man sieht also (nicht), dass es und wie an der vorhergehenden Zeile hängt.
if (Assign( (FClass))) ) and
( (not(FClass.CanNotUse)) ) and ( ( (FClass.ValueA) + ( (FClass.ValueB) * (FClass.ValueC) ) ) = 42 ) then |
AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Um solche mehrzeiligen Conditions besser les- und wartbar zu machen, bieten sich separate
Delphi-Quellcode:
an. Um die Performance nicht zu sehr zu beeinträchtigen, kann man die dann ja inline deklarieren.
function <sinnvoller Name>(...): Boolean
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 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