Seter und geter Methoden?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

beanage.johannes

Betreff: Seter und geter Methoden?

BeitragSo, Dez 20, 2009 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, wollt mal wissen und zwar: Schreibt ihr für eure Projekt Seter und geter methoden für die Types?
Weil bei BMax ist das ja recht sinnlos, bis auf das der code etwas wenn auch nur wenig leichter zu lesen ist oder?

Danke Smile

DaysShadow

BeitragSo, Dez 20, 2009 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Mittlerweile schon, da ich Type-Eigenen Variablen einen Unterstrich vorransetze und diese Schreibweise:
Code: [AUSKLAPPEN]
Instance._variable

extrem schlecht aussieht.
Andere machen es auch so bzw. wurde es mir so geraten, siehe hier: https://www.blitzforum.de/foru...styleguide

Hilft wirklich bei der Leserlichkeit des Codes.

MfG DaysShadow
Blessed is the mind too small for doubt

Jolinah

BeitragSo, Dez 20, 2009 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Es hat ausserdem den Vorteil, dass noch weitere Aktionen ausgeführt werden können (z.B. beim Setter einen PropertyChanded-"Event" auslösen, oder direkt einen Wertebereich überprüfen und den Wert nur annehmen wenn er im gültigen Bereich ist etc.). Wenn in so einem Fall die Variable direkt geändert wird, könnte es zu Fehlverhalten kommen.

Auch bei vielen anderen Sprachen ist es eigentlich eher selten dass eine Klassenvariable direkt (public) zugänglich gemacht wird. Dem einen oder anderen mag es sicher doof vorkommen für jede Variable Getter und Setter zu schreiben. Aber wenn man z.B. an die Vererbung bei Klassen denkt:

Code: [AUSKLAPPEN]

Type Parent
    Field variable:Int
End Type

Type Sub Extends Parent
    'wie kann man z.b. wenn sich die Variable ändert eine Aktion ausführen?
    'wird unnötig komplexer
End Type


Code: [AUSKLAPPEN]

Type Parent
    Field _variable:Int

    Method GetVar:Int()
        return _variable
    End Method

    Method SetVar(value:Int)
        _variable = value
    End Method
End Type

Type Sub Extends Parent
    Method SetVar(value:Int)
        If _variable <> value Then
            'Aktion
        EndIf
        Super.SetVar(value)
    End Method
End Type


Klar, das mit den Gettern und Settern gibt mehr Code, aber als komplexer würde ich es nicht bezeichnen, macht vieles einfacher Wink

d-bug

BeitragSo, Dez 20, 2009 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht bei mir in etwa so aus derzeit:
BlitzMax: [AUSKLAPPEN]
Type TDasType

Field _dasField:Int

Method setDasField:TDasType(value:Int)
_dasField = value
Return Self
End Method

Method dasField:Int()
Return _dasField
End Method

End Type


Erstellen wäre
BlitzMax: [AUSKLAPPEN]
Local MeineInstanz:TDasType = (New TDasType).setDasField(42)


Abruf wäre
BlitzMax: [AUSKLAPPEN]
MeineInstanz.dasField()


So machts das ganze für mich sehr viel leserlicher. Allerdings ist das auch nicht jedermanns Sache und sollte eigentlich jedem selbst überlassen sein. 99% meiner Codes ließt eh kein anderer, also mach ich es, wie es für mich am besten ist.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group