Robert C. MartinFunctions should either do something or answer something, but not both. Either your function should change the state of an object, or it should return some information about that object.
Heist also Methoden die den Zustand eines Objektes verändern returnen void, Queries returnen den jeweiligen Typ.
Finde ich erstmal gut. So ist die Zuständigkeit der Methode immer klar und es gibt keine verwirrung was man mit dem returnten Objekt anfangen soll.
Wenn eine Methode den Zustand verändert und etwas returnt, macht sie auch zwei Dinge.
Wirft meine save Methode eine Exception wurde wohl nichts gespeichert, dafür brauche ich keinen boolean.
Nun sehen das die Java API und der Rest der Welt anders.
Bei Collections gibt die add(Object o) true zurück falls das Objekt hinzugefügt wurde. Wieso nicht einfach eine Exception werfen? Tatsächlich wird ja eine IllegalStateException geworfen falls dies der fall ist. Was den boolean redundant macht.
Bei CRUD Methoden sieht man es auch oft. Null als pseudo boolean bei read, das entfernte Objekt zurückgeben bei delete, usw ...
Ich stehe jetzt ein bisschen auf dem Schlauch, ob ich mich nach Onkel Bob oder dem Rest richten soll. Ersteres leuchtet mir eher ein.
Wie seht ihr das?