【发布时间】:2010-12-10 05:47:33
【问题描述】:
从函数返回数据时,最佳实践是什么。返回 Null 还是空对象更好?为什么要一个人做一个而不是另一个?
考虑一下:
public UserEntity GetUserById(Guid userId)
{
//Imagine some code here to access database.....
//Check if data was returned and return a null if none found
if (!DataExists)
return null;
//Should I be doing this here instead?
//return new UserEntity();
else
return existingUserEntity;
}
让我们假设在这个程序中存在有效的情况,即数据库中没有具有该 GUID 的用户信息。我会想象在这种情况下抛出异常是不合适的?另外我的印象是异常处理会损害性能。
【问题讨论】:
-
我想你的意思是
if (!DataExists)。 -
这是一个架构问题,非常合适。 OP 的问题是有效的,无论它试图解决什么业务问题。
-
这个问题已经得到了充分的回答。我认为这是一个非常有趣的问题。
-
'getUser()' 应该返回 null。 'getCurrentUserInfo()' 或 'getCurrentPermissions()',OTOH,将是更具启发性的问题——无论谁/或是否有人登录,它们都应该返回一个 非空答案对象。跨度>
-
否 @Bergi 另一个是重复的。我的第一个被问到,在 10 月,另一个被问到 3 个月后的 12 月。另外,另一个人谈到了一个略有不同的系列。
标签: c# .net function return-value