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

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

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

9861 次点击
所在节点    Java
48 条回复
knightdf
2016-04-25 10:33:53 +08:00
Option
cloudzhou
2016-04-25 10:43:01 +08:00
比如所有属性值都有默认值,数据库字段不能为空。
确实就是很好的方式
xujif
2016-04-25 10:45:11 +08:00
数据库判空是正常的,主要是一些 list , map 之类 返回 null 代替返回 new 就好了
Lonely
2016-04-25 10:46:09 +08:00
guava
sudoz
2016-04-25 10:48:37 +08:00
同建议使用 guava
darasion
2016-04-25 10:48:59 +08:00
我认为,习惯了之后,并不烦人。
而且还有各种好处。其中最大的好处,就是写完各种 check null 代码后获得的成就感,虽然对业务逻辑的开发进度没什么促进。但是你做完了好多不得不做工作,这对建立完成项目的信心有很大帮助。
别小看信心哦,有时候你业务代码憋不出来的时候,写写这种代码,会很愉快,至少你能体验到整个项目正在推进的感觉。
specita
2016-04-25 10:52:36 +08:00
单纯判断 null 还好吧..null+empty 会比较烦..可以用 java8 optional , guava 也有
saberpowermo
2016-04-25 10:56:12 +08:00
@darasion 完全支持。
vm
2016-04-25 11:01:04 +08:00
多用用 @NotNull 和 @Nullable 之类的 annotation ,然后就可以靠 ide 的提醒了
codeyung
2016-04-25 11:21:03 +08:00
一般默认值数据库尽量不要有 null
zhouquanbest
2016-04-25 11:24:17 +08:00
君不见 因为 null 前端做防御编程时有多痛苦
所有字段检验 null null 逻辑处理 parse error 处理

所以还是拥抱变化 切到 Kotlin 吧
ChoateYao
2016-04-25 11:38:42 +08:00
重构:引入 Null 对象 P260
hooluupog
2016-04-25 11:47:39 +08:00
guava 目前是最靠谱的选择。
ffffwh
2016-04-25 11:48:18 +08:00
null references: the million dollar mistake.

理论上我觉得应该:一般情况一律 @NotNull ,用 Optional 表达空。如果真的 @Nullable ,变量名 /方法名中注明“ maybe ”
实际未在大项目中用过。
armstrong
2016-04-25 11:49:56 +08:00
使用 Apache Common Lang3 的话,可以用这个, StringUtils.isBlank(), StringUtils.isNotBlank() ;
使用 Guava 的话,使用 Optional
springzero
2016-04-25 11:52:37 +08:00
不要容易阅读。。。这也夸张了吧 (!= null 代表的含义好像就一个) 这叫防御式编程。。
westlinkin
2016-04-25 11:54:59 +08:00
转用 Kotlin , null-safe 的
gogohigh
2016-04-25 12:02:11 +08:00
java8 Optional
gogohigh
2016-04-25 12:02:11 +08:00
java8 Optional
hantsy
2016-04-25 12:14:01 +08:00
java 8 有 Optional

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

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

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

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

© 2021 V2EX