是否有任何不应该为null编写防御检查的场景?
我们应该在每次传递参数或从方法返回值时编写防御性代码或检查NULL吗?
这会给编译器带来额外的负担吗?
发布于 2013-12-06 10:00:01
处理空指针的理想方法是,如果方法不能处理空指针,则通过契约禁止它们。这取决于支持程度如何的语言:
javax.validation.constraints.NotNull
注释(或IDE(如IntelliJ和Eclipse)提供的类似注释)。不幸的是,这不是很容易携带。Contract.Requires( x != null );
not null access
类型。我通常采用契约方法,而不是在运行时检查空(如果可能的话)。它支持更早的错误发现。通常,基于合同的空检查除了编译器试图推断方法调用的参数在编译时是否会违反合同外,还会生成一个运行时检查。
认为你信任你库的调用者是个坏主意,因为你永远不知道这个库是否会在另一个环境中被重用。对调用者的信任总是会损害代码的可重用性。
https://softwareengineering.stackexchange.com/questions/220444
复制相似问题