Viele Menschen kennen diesen Artikel: mehr über Getter und Setter . Ich denke, dass es eine überzeugende Arbeit der Darstellung der bösen Seite der Getter/Setter macht. Ich habe es auch getestet, indem ich versucht habe, ein bestehendes Projekt (unvollendet) in Code ohne Getters/Setters zu konvertieren. Es hat funktioniert. Die Lesbarkeit des Codes hat sich stark verbessert, es gibt weniger Code, und ich konnte sogar Getter/Setter loswerden, wo ich sie anfangs für notwendig hielt. Außer an einer Stelle.
Modelle in den Ansichtsteil zu bringen, ist der Punkt, an dem dieser Ansatz meiner Meinung nach vorbeigeht. In dem Artikel verwendet der Autor einen Builder, um das Modell zu exportieren. Das Problem ist: Es gibt genauso viel Kontrolle über das, was in den Builder gestellt wird, wie das, was man mit Gettern bekommen hätte. Ja, er verbirgt die Implementierung, also die Art und Weise, wie sie im Modell dargestellt wird. Aber Getter holen nicht etwas aus dem Modell heraus, das sich von dem unterscheidet, was dort hineingelegt wurde. Wenn Sie ein Money-Objekt erstellen und dabei '5' im Konstruktor übergeben, wird money.getAmount() diesen Betrag nicht in eine andere Währung umgewandelt oder als Array mit einem Element '5' zurückgeben.
Was Sie einstellen, bekommen Sie. Und durch die Ansicht setzen wir Werte, und diese Werte erwarten wir, wenn wir sie von einem Objekt abfragen (get), das das halten soll, was wir in erster Linie gesetzt haben. Ein Builder, der diese Werte exportiert, erwartet einfach dasselbe.
Das ist ein bisschen lang für eine Frage. Aber ich möchte gerne in meiner Meinung bestärkt werden. Sind Getter und Setter schlecht für den Transport von Modelldaten zur Ansichtsschicht?
Es gibt eine Menge Leute, die denken, dass Getter/Setter gar nicht so böse sind. Dies ist auch nicht das, was ich hören möchte, verteidigt, wie ich denke, sie TUN böse in anderen Orten als die, die ich erwähnt.