Ich bin mit einem erfahreneren Entwickler in dieser Frage nicht einverstanden und frage mich, was andere darüber denken. Unsere Umgebung ist Java, EJB 3, Services usw.
Der Code, den ich geschrieben habe, ruft einen Dienst auf, um Dinge zu bekommen und Dinge zu erstellen. Das Problem, auf das ich stieß, war, dass ich Nullzeigerausnahmen bekam, die keinen Sinn machten. Wenn ich beispielsweise den Dienst auffordere, ein Objekt zu erstellen, erhalte ich null zurück. Wenn ich versuche, ein Objekt mit einer bekannten gültigen ID nachzuschlagen, erhalte ich null zurück. Ich habe einige Zeit damit verbracht herauszufinden, was in meinem Code falsch war. Da ich weniger erfahren bin, gehe ich normalerweise davon aus, dass ich etwas falsch gemacht habe, aber es stellt sich heraus, dass der Grund für die Null-Rückgabe die Sicherheit war. Wenn der Benutzerprinzipal, der meinen Dienst verwendet, nicht über die richtigen Berechtigungen für den Zieldienst verfügt, wird einfach null zurückgegeben. Die meisten anderen Dienste hier sind ebenfalls nicht sehr gut dokumentiert, daher ist dies anscheinend nur etwas, was Sie wissen müssen.
Dies ist ziemlich verwirrend, da Entwickler Code schreiben, der mit dem Dienst interagiert. Es wäre für mich viel sinnvoller, wenn der Dienst eine Ausnahme wäre, die mir sagt, dass der Benutzer nicht über die richtigen Berechtigungen zum Laden oder Erstellen dieses Dings verfügt. Ich würde dann sofort wissen, warum mein Service nicht wie erwartet funktioniert.
Der erfahrenere Entwickler, der den Service geschrieben hat, argumentierte, dass das Anfordern der Daten keine Fehlerbedingung ist und dass Ausnahmen nur in einer Fehlerbedingung ausgelöst werden sollten, nicht wenn der Benutzer keinen Zugriff auf die Daten hat. Diese Daten werden häufig in einer GUI nachgeschlagen, und für Benutzer ohne die richtigen Berechtigungen sind diese Dinge einfach "nicht vorhanden". Kurz gesagt: Fragen ist nicht falsch, daher keine Ausnahme. Get-Methoden geben null zurück, da diese Dinge für diese Benutzer "nicht vorhanden" sind. Erstellungsmethoden geben null zurück, wenn der Benutzer das Ding nicht erstellen durfte.
Ist das normal und / oder eine gute Praxis? Ich bevorzuge Ausnahmen, weil ich es viel einfacher finde zu wissen, was los ist. So würde ich zum Beispiel auch lieber eine NotFoundException auslösen, wenn Sie nach einem Objekt mit einer ungültigen ID gefragt haben, anstatt null zurückzugeben.