gpt4 book ai didi

spring-webflux - 为什么 Mono 不能持有 NULL

转载 作者:行者123 更新时间:2023-12-05 03:37:04 25 4
gpt4 key购买 nike

Mono.just(null) 不会编译。这是为什么?

在程序层面上,我明白了。有一个没有要处理的东西的处理队列是没有意义的。有人可以用更深入的技术为我解释这个吗?

最佳答案

出租有高风险null进入一个应用程序/库,如果你能禁止它,就应该禁止它。

Null就像让炸弹进入你的应用程序,如果有可能是 null ,然后某些东西可以用 NullPointerException 爆炸随时。

null始终在应用程序中产生巨大的不确定性。你应该总是清理掉 null越早越好。

人们通过做 null 来解决这个问题检查,无处不在,这基本上是多余的操作。

先生。 Tony Hoare - null 的发明者著名地声称 null是他的:

billion dollar mistake.

有很多编程语言没有 null,这里有一个很长的列表:

List of languages without null

拥有null在流中是没有意义的,因为这也意味着 react 堆库必须做 null检查他们的代码以确保他们不会尝试对 null 进行操作值(value)。每个人都必须做 null检查每个 flatMap , map , filter , operator等等,因为可能有潜在的NullPointerException在所有这些运算符中。

所以他们有机会排除null ,这很有意义,因为 null不是值,并且只有值可以在流中传输,所以这可能就是他们决定反对它的原因。

相反,他们决定使用类型 Void代表“无”,可以通过调用Mono<Void> nothing = Mono.empty();获得这是类型安全的,如果您触摸它不会爆炸,并且会按照您的预期运行,因为开发人员控制它,而不是运行时。

我反而会问自己,为什么你真的需要 null ?我猜是因为您已经习惯了,习惯性地编写代码是不好的。

我看到 null 被使用的次数有 95% 可以被删除。

学习如何在没有 null 的情况下编码,养成使用默认值、回退值等的习惯。这很可能会使您的程序更健壮,更具确定性。

关于spring-webflux - 为什么 Mono 不能持有 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69461051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com