私はあなたのフィードバックを聞くことに興味があります。最近、次の方法で実装されたJavaコードをいくつか見ました。
Object1 SomeMethod(String key) {
Object1 object1 = null;
List<Object1> objectList = getAllRecordsWithKeyFromDatabase(key);
if (!objectList.isEmpty()) {
object1 = objectList.get(0);
}
return object1;
}
void AnotherMethod() {
...
Object1 object1 = SomeMethod(key);
if (object1 == null) {
// throw exception
}
// continue working
}
コンテキストなしでnullが返されるときはいつでも、私は常に心配しています。むしろ、SomeMethodからの応答をより明確にし、リファクタリングを検討していました。SomeMethodから例外をスローすると、これを行う方法が提供される可能性があります。それは状況に応じて発生し、障害が発生した時点で発生します。
nullが常に「見つからない」と等しいと仮定する代わりに、SomeMethodがAnotherMethodに「データベースに何も見つかりませんでした」と通知できる別の方法があるかどうか疑問に思っています。NullObjectを使用できると思いましたが、データが見つからなかった場合に、AnotherMethodが「作業を継続する」ことを回避する方法がわかりません。
コードをどのようにリファクタリングしますか?