Wenn Sie wissen, dass Sie den Wert immer abschneiden müssen, vermeidet dieses Szenario Code-Duplikate, z. Vor deinem Set musst du immer trimmen und dir Sorgen machen, wo du das Trimmen verpasst hast. Meiner Meinung nach ist es eine gute Übung, es in Setter zu haben.
Wenn Sie Setter verwenden, um etwas anderes zu tun, als den Wert transparent festzulegen, verletzen Sie das Prinzip der Trennung von Belangen : Bei diesem Design haben Sie die Einstellung immer mit dem << em> trimmen Anliegen. Das ist alles toll und pfirsichfarben - solange Sie 100% ig sicher sind, dass Sie während der Lebensdauer Ihres Programms nie mehr als einen einzigen Anwendungsfall haben, in dem Sie die Einstellung ohne Trimmen wünschen. Sobald Sie es brauchen, ist der Fehlermodus dieses Designs ziemlich erbärmlich: Sie haben eine regelmäßige set
-Methode, die tatsächlich "speziell" ist und gezwungen wird, eine weitere setWithoutTrimming
-Methode hinzuzufügen, genau das Gegenteil von jedem vernünftigen Annahme für einen neuen Programmierer.
Allgemein gesagt, meine Wahl besteht darin, reine öffentliche Felder zu verwenden (Hibernate unterstützt sie ebenso wie Spring, Jackson usw.), was die Semantik, sie zu löschen, deutlich macht. Wenn ich ein anderes Problem habe, wie zum Beispiel das Trimmen, dann verwende ich einen expliziten Aufruf an eine statische Methode (eine reine Funktion), die die notwendige Transformation durchführt. Dies führt zu einem klaren und offensichtlichen Design, ohne WATs wie "Warum gibt der Getter einen anderen Wert zurück als den, den ich gerade gesetzt habe?".
Ich fühle, solange die Methode klar dokumentiert ist, ist die Logik in Ordnung.
Am Ende des Tages möchten Sie nicht mit vielen Stellen im Code enden, an denen das Trimmen vor dem Aufruf des Setter durchgeführt wird.
Wenn Sie später entscheiden, dass Sie die Zeichenfolge nicht mehr zuschneiden müssen, müssen Sie nur eine Änderung vornehmen.
Schließlich besteht der Punkt der Kapselung darin, Daten und Verhalten an denselben Daten zu platzieren.
Dieser Code ist in Ordnung. Der Grund, warum Setter den öffentlichen Werten vorzuziehen sind, ist, dass Sie jede Logik in ihnen einführen können, ohne die Klassenschnittstelle zu sprengen. Ich habe nur eine Anmerkung, wenn Sie die Saite in Setter trimmen, dann sollten Sie sie immer in Getter trimmen. In Ihrem aktuellen Fall haben Sie ein Problem:
Der erste und der letzte wird anders sein. Dies ist möglich, wenn die Tabelle von einer externen Entität ausgefüllt werden kann.
Tags und Links java