关于return null问题
}
在我看来没有充分的理由不应该返回null,因为方法的使用者并不知道在何种条件下会得到null,从而导致臭名昭著的NullReferenceException异常。
如果由于其他原因导致无法得到一个User,我们应该抛出一个明确的异常供上层服务决定如何处理:
1
2
3
4
5
6
7
public User GetUser( string userName, string password)
{
if ( )
return new SpecificException( "can't get this user because ...." );
return DB.GetByUserId(userId);
}
在我读过的开源项目中我几乎没有见到过return null的写法。能让我一时想到的两个linq方法FirstOrDefault()和LastOrDefault(),这两个方法通过命名的方式提醒使用者该方法会返回null。
说到FirstOrDefault()方法让我想起了很多人容易犯的另一个错误:
1
2
3
4
public User GetUserById(Guid userId)
{
return list.FirstOrDefault(x=>x.UserId==userId);
}
在确认数据库中该userId必须对应一个User的情况下使用FirstOrDefault()方法,此种场景我会建议你果断使用Single()方法。因为此时使用FirstOrDefault()会隐藏bug。你期望该userId必须得到一个User,如果Single()方法抛出异常则说明有bug出现,并且让你在第一时间发现该bug。
F#为了减少null类型的使用引入了option类型,在将option用作函数的返回类型时,如果没有对未定义的类型做处理,编译器会报错。
1
2
3
4
5
let invalidInt = None
match invalidInt with
| Some x -> printfn "the valid value is %A" x
| None -> printfn "the value is None"
如果此处的模式匹配忘记编写None->分支,编译器将会报错,从而提醒你必须处理invalidInt值为None时的逻辑。但是在C#中使用null类型,编译器给予不了我们帮助,所以我们应该避免return null这样的代码。
相关知识
关于return null问题
关于null != a 与 a != null 的区别
萌宠之宠物网站关于狗猫的
写代码前都判断if==null
if num == 0: return 【2】 else:
android studio 无法关联源码问题
多态 大小狗问题1java
out = self.fc(inp) return o
微信token重复请求导致redis缓存失效的问题
(微信小程序毕业设计)宠物寄养交流平台(附源码+论文)
网址: 关于return null问题 https://www.mcbbbk.com/newsview916580.html
上一篇: 梦幻西游这才真正的39大佬 每只 |
下一篇: Honeycare宠物用品哪个型 |
推荐分享

- 1我的狗老公李淑敏33——如何 5096
- 2南京宠物粮食薄荷饼宠物食品包 4363
- 3家养水獭多少钱一只正常 3825
- 4豆柴犬为什么不建议养?可爱的 3668
- 5自制狗狗辅食:棉花面纱犬的美 3615
- 6狗交配为什么会锁住?从狗狗生 3601
- 7广州哪里卖宠物猫狗的选择性多 3535
- 8湖南隆飞尔动物药业有限公司宠 3477
- 9黄金蟒的价格 3396
- 10益和 MATCHWELL 狗 3352