Logische Schreibweisen

  • Hallöchen,


    welche Schreibweisen sollte man verwenden?
    Sind die folgenden Schreibweisen denn Grundsätzlich richtig?


    1. If Variable (Ist Variable=True?)
    2. If Not Variable (Ist Variable=False?)
    3. If Variable=True (Ist Variable=True?)
    4. If Not Variable=True (Ist Variable=False?)
    5. If Variable=False (Ist Variable=False?)
    6. If Not Variable=False (Ist Variable=True?)


    Laut Handbuch ist "Not" nur eine Invertierung.
    Also aus True wird False oder andersrum.


    Wie haltet ihr das, gibt es da bestimmte Regeln?

    Bis denne Oliver 8)

    Einmal editiert, zuletzt von Werner Hampel ()

  • Schritt für Schritt zum Roboterprofi!
  • Hallöchen,


    welche Schreibweisen sollte man verwenden?
    Sind die folgenden Schreibweisen denn Grundsätzlich richtig?


    1. If Variable (Ist Variable=True?)
    2. If Not Variable (Ist Variable=False?)
    3. If Variable=True (Ist Variable=True?)
    4. If Not Variable=True (Ist Variable=False?)
    5. If Variable=False (Ist Variable=False?)
    6. If Not Variable=False (Ist Variable=True?)


    Laut Handbuch ist "Not" nur eine Invertierung.
    Also aus True wird False oder andersrum.


    Wie haltet ihr das, gibt es da bestimmte Regeln?

    Bis denne Oliver 8)

    Einmal editiert, zuletzt von Werner Hampel ()

  • Ich habe jetzt nicht ganz verstanden auf was du hinaus willst, aber ganz allgemein ist es schlechter Stil boolsche Variablen auf TRUE oder FALSE abzufragen:


  • Hallo


    was ich auf den tot nicht ab kann ist


    Code
    IF bBool==TRUE THEN
      bAndereBool = FALSE
    ENDIF
    IF bBool==FALSE THEN
      bAndereBool = TRUE
    ENDIF


    oder

    Code
    IF bBool==TRUE THEN
      bAndereBool = FALSE
    Else
      bAndereBool = TRUE
    ENDIF


    wenn doch


    Code
    bAndereBool = NOT bBool


    reicht.


    das selbe mit


    Code
    IF nZahl>5 THEN
      bAndereBool = FALSE
    ELSE
      bAndereBool = TRUE
    ENDIF


    wenn


    Code
    bAndereBool = (nZahl<=5)


    recht


    und IF die nen Zeilenumbruch machen


    entschuldigung musste ich mal loswerden


    Gruß Loipe

  • Hi Leute,


    danke für die Antworten. Bin gerade dabei ältere Programme auszumisten und neu zu schreiben. Da sind mir so ziemlich alle Variationen aufgefallen die man so schreiben kann. Die Programme wurden wohl durch mehrere Person gleichzeitig gepflegt, und jeder hatte seinen eigenen Stil :)

    Bis denne Oliver 8)

  • Mmh,
    nach meiner Auffassung:
    bBOOL = TRUE ist eine direkte Zuweisung, bBOOL = not bBOOL eine Invertierung des aktuellen Zustands. Somit nur zu 50% identisch mit dem ersten Ausdruck. Es sei denn bBOOL kennt noch andere Zustände ausser TRUE and FALSE... :zwink:

    never touch a running system

  • Eine Invertierung bedeutet Schwarz oder Weiß, True oder False also immer das Gegenteil. Da eine boolsche Variable aber nur 2 Zustände haben kann sehe ich da keine Probleme.
    Genau wie bei Ein/Ausgänge, die Frage ich auch sehr oft mit z.B. "WAIT FOR DI04SGM_AUSWERFER_HINTEN oder WAIT FOR NOT DI04SGM_AUSWERFER_HINTEN " ab. Bisher keine Probleme.

    Bis denne Oliver 8)

    Einmal editiert, zuletzt von EddiFox ()


  • ... welche Schreibweisen sollte man verwenden?...


    Moin Eddi,


    welche Schreibweise Du verwendest ist - grundsätzlich - Deiner Vorliebe überlassen. Gut lesbar sind die schon vorgeschlagenen Varianten ...


    Code
    IF bBool THEN
      ...
    ENDIF
    
    
    IF NOT bBool THEN
      ...
    ENDIF


    Wenn Du außerdem noch sinnvolle Variablennamen verwendest, wird der Code ohne zusätzliche Kommentare gut lesbar. ;)


    Das gleiche Problem wie Du habe ich nämlich auch gerade. Ein Programm, in dem alle möglich Varianten (=TRUE, =FALSE, <>TRUE, ... :roll: ) vorkommen. Nach dem Ausmisten und vergeben vernünftiger Variablen-, Prozeduren- und Funktionsnamen konnte ich 90% aller Kommentare entfernen. :)


    Gruß
    Jörn

    In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

  • Nur mal Interessehalber an dieses Thema gehängt, weil es hier wie selbstverständlich wieder auftaucht: aus welchem Teil der Hölle stammt eigentlich die Unart, unmittelbar VOR den eigentlichen Variablennamen einen Präfix zu hängen, der mit einem oder auch mehreren Buchstaben den Typ beschreibt? Als jemandem, der WÖRTER liest, macht mich das wahnsinnig! Und es ist so sinnlos....


    Grüße,
    Michael

  • Sehe ich eigentlich genauso......


    aber es gibt genügend diletanten die Sowas brauchen weil sie sich nichts merken können und für die faulen die Syntaxvervollständigung nutzen hats einen Vorteil wenn du mit dem Präfix anfängst kriegst du ne schöne liste aller mit dem Präfix.


    aber generell gabe ich dir recht

  • Hi Programmiersklave,


    hab mal gegoogelt...
    Herr Charles Simonyi ist verantwortlich, er hat dieses System namens "Ungarische Notation" erfunden.
    Ich erinnere mich dass es z.B. bei den Stäubli Robotern fest in der Programmiersprache verankert ist.


    Grüße
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

    Einmal editiert, zuletzt von Twister ()


  • Sehe ich eigentlich genauso......


    aber es gibt genügend diletanten die Sowas brauchen weil sie sich nichts merken können und für die faulen die Syntaxvervollständigung nutzen hats einen Vorteil wenn du mit dem Präfix anfängst kriegst du ne schöne liste aller mit dem Präfix.


    aber generell gabe ich dir recht


    Ich wäre da etwas vorsichtiger mit meiner Ausdrucksweise. Bezeichnungen wie etwa Dilettanten und/oder Faule haben hier nichts zu suchen.
    Für die Intelligenten und Fleissigen zu denen ich dich dann ja zählen sollte eine Frage. Woher weiß ich, wenn ich an einen Roboter komme ob z.B Greifer_offen eine Boolsche Variable ist oder ein digitaler Eingang?
    Bevor ich da jemanden zumute irgendwelche Datenfiles zu durchsuchen verwende ich lieber die ungarische Notation.
    bGreifer_offen, diGreifer_offen.
    Ist das dilettantisch? Bin ich deswegen faul? Oder mache ich mir und anderen damit das Leben/Einlesen in ein Programm leichter?

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • Servus,


    die Leute die den Präfix vorne weglassen, sind meist auch die Leute deren Variablennamen nicht sinnvoll deklariert sind.
    Woher weist du, wenn du nicht gerade selbst das Programm geschrieben hast obs ein Bool oder evtl. ein Digitaler Eingang ist?
    Für mich erleichtert das ungemein die Lesbarkeit eines fremden Programms.


    BTW: es gibt auch Programmierer die können ihr eigenes Programm nach einem Jahr nicht mehr lesen.


    Würden sich alle daran halten dann gäbs nicht so eine Saustall wie in manchen Programmen.


    dixxx => digital input
    doxxx => digital output
    gixxx => group input
    goxxx => group output
    aixxx => analog input
    aoxxx => analog output
    bxxxx => boolean
    rxxx => real
    nxxx => numeric/integer
    sxxx => string


    Musste ich mal loswerden. :zwink:


    Grüße
    Martl

  • Loipe


    Es geht mir auch tierisch auf den Sack jedesmal die Config.dat zu durchsuchen um den Datentyp zu Erfahren.
    (Es gibt auch noch Steuerungen vor der KRC 4, da musste man suchen)
    Das selbe gilt auch für Deklarationen von z.B. digitalen E/As => die gehören in die Config.dat und nicht wie schon oft gesehen ins Dat-File von Unterprogrammen.


    Solche Programmierer gehören mit Klobürste gekämmt. :genau:


    Aus.


    Grüße
    Martl

  • ich hab ja auch nur generell gesagt.


    lokal lasse ich den Präfix gerne weg weils auch oben im Programm steht (brauch ich nicht zu suchen steht da)
    ich deklariere globale mit Präfix für die übersicht (vor allem bei E/A`s)


    Faul ist bei mir kein Schimpfwort da kommen die besten lösungen her und war hier auch nicht so gemeint wenn man nochmal drüber liest;)


    Roland diletanten war eine unüberlegte Wortwahl aber auch eher in die Richtung gemeint das einige Variablen so benennen das sie schon am ende des tages nicht mehr wissen was sie mit dieser machen wollten.
    Ironie überträgt sich geschrieben schlecht und werd ich jetzt aus den Posts rauslassen.


  • @Roland diletanten war eine unüberlegte Wortwahl aber auch eher in die Richtung gemeint das einige Variablen so benennen das sie schon am ende des tages nicht mehr wissen was sie mit dieser machen wollten.
    Ironie überträgt sich geschrieben schlecht und werd ich jetzt aus den Posts rauslassen.


    Wahre Worte. :supi:
    Ironie kannst du gerne im Spiel lassen. In dem Beitrag war das, zumindestens für mich, nicht wirklich erkennbar. ;)

    Gruß Roland


    Wie poste ich falsch?

    Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.

    Konrad Adenauer

  • laut wiki...


    Microsoft:
    Die Framework Design Guidelines (zu dt. Frameworkentwurfsrichtlinien, Vorgaben seitens Microsoft bzgl. der Benennung und des Modells für Bibliotheken, die das .NET Framework erweitern) verbieten Entwicklern den Einsatz der ungarischen Notation, obwohl es bei veralteten Entwicklungsplattformen wie Visual Basic 6 durchaus üblich war.[7] Die Framework Design Guidelines machen jedoch keine Aussage über die Benennung privater Variablen.


    ...es gibt dafür und dagegen...

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

  • Ich wollt' ja nur wissen, wo es herkommt :lol:


    Bin ja nicht grundsätzlich gegen Präfixe, wenn ich auch eher denke, dass sie den groben Kontext anzeigen sollten. E/A gehören da sicherlich zu, lokal deklarierte BOOL eher nicht, aber macht, was Ihr wollt. :twisted:


    Ich fände es nur super, wenn man dergleichen durch einen oder zwei Unterstriche vom Wort abtrennen könnte. Damit man das eigentliche Wort nämlich wieder einfach lesen kann. Ich sehe in "ungarisch" verunstalteten Programmen nämlich nur Buchstabensalat, triggert nicht mein visuelles System.
    Entsprechend dieser wunderbaren Merkwürdigkeit, die zwar im Grunde ein Fake ist, aber trotzdem funktioniert, also, bei mir jedenfalls:
    https://www.heise.de/tp/features/Unlguailbch-3431355.html


    (Und schon bei Zahlen hört's ja auf. Bei ABB haste Trennung byte/num/dnum, bei KUKA real/int.... )


    Grüße,
    Michael

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden