Set*/Get* oder Überladen?



  • drakon schrieb:

    Das Problem mit "Is" ist nur, dass man es nicht überall verwenden kann, da es einen boolschen Wert halt schon impliziert. Entweder ist es Visible, oder nicht.

    das ist ein vorteil und kein nachteil, würde ich meinen.
    ich brauche mir nämlich nicht zu merken, welchen typ IsVisible zurückgibt.
    Es soll einfach logisch, nachvollziehbar und möglichst intuitiv zu nutzen sein. 🙂



  • volkard schrieb:

    drakon schrieb:

    Das Problem mit "Is" ist nur, dass man es nicht überall verwenden kann, da es einen boolschen Wert halt schon impliziert. Entweder ist es Visible, oder nicht.

    das ist ein vorteil und kein nachteil, würde ich meinen.
    ich brauche mir nämlich nicht zu merken, welchen typ IsVisible zurückgibt.
    Es soll einfach logisch, nachvollziehbar und möglichst intuitiv zu nutzen sein. 🙂

    Ja, klar, aber ich meine, wenn man konsequent sein will mit der Namensgebung (im Sinne von Is oder Get), dann geht das mit Is nicht wirklich mit Get jedoch schon.
    (impliziert dann aber (leider), dass es mehr, als 2 Zustände gibt, was wiederum auch nicht unbedingt schlecht sein muss).

    Ich persönlich würde da auch eher zu einer gemischten Varianten tendieren mit klar geregelten Ausnahmen. 🙂



  • drakon schrieb:

    Ja, klar, aber ich meine, wenn man konsequent sein will mit der Namensgebung (im Sinne von Is oder Get), dann geht das mit Is nicht wirklich mit Get jedoch schon.

    Diesen Wunsch kann ich nicht nachvollziehen. Wozu gleichartige Namensgebung? Müßte ich dann nicht genau in diesem Sinne auch das Get weglassen und nur Visible() schreiben?



  • volkard schrieb:

    drakon schrieb:

    Ja, klar, aber ich meine, wenn man konsequent sein will mit der Namensgebung (im Sinne von Is oder Get), dann geht das mit Is nicht wirklich mit Get jedoch schon.

    Diesen Wunsch kann ich nicht nachvollziehen. Wozu gleichartige Namensgebung? Müßte ich dann nicht genau in diesem Sinne auch das Get weglassen und nur Visible() schreiben?

    Falls man das will. Kann ja durchaus sein. Ich persönlich möchte immer alles nach dem gleichen Schema haben und jede Ausnahme nervt mich. (Nichtsdestotrotz würde ich hier auch Ausnahmen machen, aber das muss ja nicht jeder so wollen).



  • Ich sehe jetzt IsBlabla nicht als Ausnahme, weil GetBlabla Standard ist... Sind halt zwei gleichwertige Möglichkeiten mit unterschiedlichen Anwendungen. Ich mach das jedenfalls auch immer so.

    Ist das einfach so eine fixe Idee von dir? (Ich frage nur, das hab ich nämlich selber oft). 🙂

    Wichtig ist - wie du schon sagtest - Konsistenz. Aber die geht ja durch Verwenden von Is und Get je nach Rückgabetyp nicht verloren...



  • kannst ja auch einfach nur Visible() nennen, getter und setter in einem

    Mouse m;
    m.Visible() = true;
    if (m.Visible())
    // diesunddas
    

    also einfach eine referenz zurückgeben, mit einer helferklasse
    geht das (eben ausprobiert)



  • helferlein schrieb:

    kannst ja auch einfach nur Visible() nennen, getter und setter in einem

    Dann hat man wieder das Problem, dass man nicht sofort sieht, was getan wird. Stell dir mal einen komplexeren Ausdruck vor. Da kann es schnell zu unvorhergesehenen Seiteneffekten kommen, weil man aus Versehen das Objekt verändert.



  • ich schlage vor:

    Mouse m;
    m.Visible() = true;
    if (m.Visible() = false)
    // diesunddas
    


  • volkard schrieb:

    ich schlage vor:

    Mouse m;
    m.Visible() = true;
    if (m.Visible() = false)
    // diesunddas
    

    Einer Funktion einen Wert zuweisen ist hässlich und fehleranfällig (siehe dein falsches if).



  • wenn du das ganze klassenorientiert machen willst, kannst du ja dafür
    ne membervariable nehmen


Anmelden zum Antworten