结合整洁代码理念,软件开发中是否应当使用null值?
关于整洁代码中避免Null使用的实践分享
最近我刚啃完几本聚焦整洁代码与重构的书籍,其中Robert C. Martin在《Clean Code: A Handbook of Agile Software Craftsmanship》(第六版第110-112页)里的一个建议特别值得拿出来聊聊:除非是调用外部不可变的代码(比如官方库、第三方框架这类我们无法修改的代码),否则绝对不要返回null,也不要把null传入任何自定义函数。
根据我实际开发中的踩坑经验,这个建议真的能帮我们避开大量无意义的空引用错误——毕竟谁没花过半小时追着NullPointerException找哪里漏了null检查呢?从源头减少null的传递,代码的可读性和稳定性都会提升不少。
那替代null的常用方案有哪些呢?给大家整理几个实用的:
- 抛出明确的异常:如果某个参数缺失、或者返回值不存在属于异常场景,直接抛出带有清晰描述的异常(比如Java里的
IllegalArgumentException),让问题在发生时就立刻暴露,而不是隐藏到后续流程里引发更难排查的问题。 - 返回空对象/默认值:比如需要返回集合时,返回空的
List或Map而非null;对于自定义业务对象,可以定义一个代表“空状态”的单例实例(比如User.EMPTY),调用方不用做null检查就能直接调用对象方法,逻辑更顺畅。 - 使用语言自带的可选类型:很多现代编程语言都内置了空安全的可选类型,比如Java的
Optional<T>、C#的Nullable<T>、Kotlin的空安全类型、Python的Optional(结合类型提示),强制调用方显式处理“值可能不存在”的情况,从语法层面避免空引用隐患。
内容的提问来源于stack exchange,提问作者PixelMaster
相关产品推荐
相关产品推荐

