java 中烦人的 null 在开发中怎么处理的?

2016-04-25 10:26:59 +08:00
 LINEX

业务逻辑复杂的时候,各种 != null 多到数不清,代码也变得不太容易阅读。
大家在项目中是如何规范 null 的使用的?
比如所有属性值都有默认值?数据库字段不能为空?

9896 次点击
所在节点    Java
48 条回复
karloku
2016-04-25 22:23:50 +08:00
https://en.wikipedia.org/wiki/Null_Object_pattern
confident coding 常用的一种模式, 如果是写自己东西的话可以避免 null, 而是甩出一些空值对象或者 dummy object.
不过在稍微大点的项目里对 null 还是没什么很好的办法, 就算你自己的包 confident 了, 还是要面对别人的包里丢出来的 null...
xujif
2016-04-25 23:50:27 +08:00
我说反了。是不要返回 null
@akinoneko
hinkal
2016-04-26 00:02:20 +08:00
搜索 Null Object 设计模式
georgema1982
2016-04-26 01:15:28 +08:00
所以我现在很烦纯 java ,更加喜欢用 groovy
ffffwh
2016-04-26 02:20:41 +08:00
@Narcissu5
“ null 在类型系统中开了个洞”。实际上 Java 里所有的 X 类型都可以读作 Maybe_X 。
Swift 没 null ,有 optional 。
Optional 一般不判空,而是一路.map ,一步为空则后续自动为空,最后才判空或者.orElse 。实际业务逻辑里是否好用不明。
monad 啥的我也不懂就不扯了,丢篇文章
http://fsharpforfunandprofit.com/rop/
ivanlw
2016-04-26 05:19:14 +08:00
@georgema1982 From Groovy creator James Strachan:
"I can honestly say if someone had shown me the Programming Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy. "
shawshi
2016-04-26 09:11:27 +08:00
尽量在输入录入的时候,就加上非空验证吧
linux40
2016-04-26 09:31:02 +08:00
Null 对象确实是一种解决方式。
georgema1982
2016-04-27 00:17:02 +08:00
@ivanlw 不知到你为什么还在引用老黄历, groovy 早就在后 James Strachan 时代了,他说什么并不重要

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/274170

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX