AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

Ein Thema von paule32.jk · begonnen am 9. Okt 2024 · letzter Beitrag vom 25. Nov 2024
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.240 Beiträge
 
Delphi 12 Athens
 
#1

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 14. Okt 2024, 09:38
Ich finde es sogar sehr schön.
Außer man ist ein Klammer-Fan so wie ich, und nutze Klammern gerne in Mathematik und Code um Teile zu separieren,
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:

if ....Assign(......FClass )
   and ......(......FClass.CanUse )
   and ......(.(....FClass.ValueA
   .............+ ( FClass.ValueB * FClass.ValueC )
               ). = 42
             ) then
  begin
  end;
vs.

Delphi-Quellcode:

if Assign(FClass) and FClass.CanUse and (FClass.ValueA+FClass.ValueB*FClass.ValueC=42) then
  begin
  end;
Wo kann man logische Fehler wohl besser erkennen?

Natürlich versuche ich das weiter zu entflechten durch negative Logik und Guards
Delphi-Quellcode:

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;
Ok, das ist sicher extremer als ich das aktuell mache, aber größtenteils Geschmackssache und Philosophie ...
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.

Geändert von Rollo62 (14. Okt 2024 um 09:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#2

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 14. Okt 2024, 09:59
Außer man ist ein Klammer-Fan so wie ich, und nutze Klammern gerne in Mathematik und Code um Teile zu separieren,
Das geht ja noch ... wir haben hier ein paar Klammer-Fetischisten, die klammern ALLES und JEDEN, sogar einzelne Variablen,
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
Code:
if (Assign(      (FClass))) ) and
          (      (not(FClass.CanNotUse)) ) and
          ( (    (FClass.ValueA) +
               ( (FClass.ValueB) * 
                 (FClass.ValueC) )
            )  = 42
         ) then
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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Okt 2024 um 10:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.758 Beiträge
 
Delphi 12 Athens
 
#3

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 14. Okt 2024, 10:25
Um solche mehrzeiligen Conditions besser les- und wartbar zu machen, bieten sich separate function <sinnvoller Name>(...): Boolean an. Um die Performance nicht zu sehr zu beeinträchtigen, kann man die dann ja inline deklarieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#4

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 30. Okt 2024, 16:51
Um solche mehrzeiligen Conditions besser les- und wartbar zu machen, bieten sich separate function <sinnvoller Name>(...): Boolean an. Um die Performance nicht zu sehr zu beeinträchtigen, kann man die dann ja inline deklarieren.
Compile Time Makros wären mir noch lieber.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#5

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 30. Okt 2024, 17:23
Wird von Emba abgelehnt.

Schon mehrfach danach gefragt.
Und dabei hab ich sogar eine für die Pascal-Syntax passende Variante für einfache einzeilige Makros vorgeschlagen.

Leider ist es auch nicht mehr möglich einen "Precompiler" zwischenzuschalten, so, wie es jemand bis Delphi 7 genutzt hatte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.058 Beiträge
 
Delphi 12 Athens
 
#6

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 18. Nov 2024, 16:14
Compiletime Makros würden auch sowas bedingte generics abbilden können oder Ducktyping... Ich fände das schon ganz praktisch... besser als inlining.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#7

AW: EMB DCE 12 - Bedingungen mit einen Assign-Zeichnen

  Alt 18. Nov 2024, 16:27
Ducktyping ist in Pascal schon möglich (wurde in mehreren Projekten umgesetzt, brutal mit OleVariants und Interfaces),
aber auf CodeCompletion, CodeInsight, HelpInsight und derartig nutzloes Zeugs, darf man dabei verzichten.
Auch fallen Schreibfehler erst zur Runtime auf.
Ein Therapeut entspricht 1024 Gigapeut.
  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 13:57 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