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

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

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

9877 次点击
所在节点    Java
48 条回复
zhujinliang
2016-04-25 12:18:02 +08:00
golang 笑而不语
LINEX
2016-04-25 13:06:03 +08:00
@zhujinliang 但是 golang 有 err != nil 啊,哈哈哈
LINEX
2016-04-25 13:06:54 +08:00
@springzero 代码里出现很多这种东西挺烦的,有时候不得不一层套着一层,出现好多嵌套层。。。。。
lijsf
2016-04-25 13:12:23 +08:00
java 的 null 还好了, C/C++就得跪了。
monkeylyf
2016-04-25 13:12:50 +08:00
“ Null is the worse mistake ever made in computer science history."
monkeylyf
2016-04-25 13:13:16 +08:00
@monkeylyf /worse/worst
slixurd
2016-04-25 13:14:27 +08:00
不判断 null 的后果就是操作 object 时直接 NullPointerException 了
自己写个 Validator 就好了,尽量写在 Model 里面,不写在 Service/Controller 层。
hooluupog
2016-04-25 13:34:19 +08:00
@LINEX 但 Go 有默认值,很多数据结构默认值就不允许为 nil ,根本没有 java/c++里面这种 null 带来的比较严重的问题,只是写起来很罗嗦,需要改进。但这个问题不是 null 最大的危害所在。你只觉得 java 里的 null 判断比较罗嗦,但其实仅仅是罗嗦的话,这个问题也就不会是 one billion dollar mistake 了。
asj
2016-04-25 13:40:51 +08:00
@darasion GC 也严重削弱了程序员的成就感。
LINEX
2016-04-25 14:45:38 +08:00
@hooluupog 好吧,别偏题啊,我只是想知道大家是如何处理这个问题的,和 golang 无关啊。。。。
Patiencec
2016-04-25 14:53:32 +08:00
好吧,偏个题。 java 不熟悉不知道有没有可选类型
tomoya92
2016-04-25 14:57:57 +08:00
akinoneko
2016-04-25 16:50:40 +08:00
@xujif 返回类型 list map 之类的返回 null 不好吧
cloudhuang
2016-04-25 20:28:02 +08:00
推荐这个 blog http://www.yegor256.com/2014/05/13/why-null-is-bad.html ,列举了在开发中常见的几种 null 的场景以及如何避免
huiyue
2016-04-25 20:55:22 +08:00
目前为止, Java 中我针对可能的 null 都是老老实实判断的。
eimsteim
2016-04-25 21:39:42 +08:00
并未觉得 null 有什么不好用的地方,有时候用 null 来做异常判断会更方便。
wucao219101
2016-04-25 22:08:39 +08:00
caixiexin
2016-04-25 22:12:46 +08:00
用 google 的 guava 包
Narcissu5
2016-04-25 22:13:51 +08:00
@specita @ffffwh optional 一样要查空,并没有太大不同

如果 null 是个错误,为什么几乎所有语言都有 null 或者类似的东西呢。 null 不是错误,它是编程中必须要面对的一个问题。
Narcissu5
2016-04-25 22:21:51 +08:00
按最小开放原则,方法尽量 private ,私有方法可以在编译时检查是否有 null ,通过检查就不用再 check 了,就酱~

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

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

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

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

© 2021 V2EX