当前位置:  开发笔记 > 编程语言 > 正文

将null传递给方法

如何解决《将null传递给方法》经验,为你挑选了1个好方法。

我正在阅读优秀的清洁代码

一个讨论是关于将null传递给方法.

public class MetricsCalculator {
    public double xProjection(Point p1, Point p2) {
        return (p2.x - p1.x) * 1.5;
    }
}
...
calculator.xProjection(null, new Point(12,13));

它代表了处理这个问题的不同方法:

public double xProjection(Point p1, Point p2) {
    if (p1 == null || p2 == null) {
        throw new IllegalArgumentException("Invalid argument for xProjection");
    }
    return (p2.x - p1.x) * 1.5;
}

public double xProjection(Point p1, Point p2) {
    assert p1 != null : "p1 should not be null";
    assert p2 != null : "p2 should not be null";
    return (p2.x - p1.x) * 1.5;
}

我更喜欢断言方法,但我不喜欢断言默认关闭的事实.

这本书最后说:

在大多数编程语言中,没有好的方法来处理由调用者意外传递的null.因为这种情况,合理的方法是禁止默认传递null.

它并没有真正涉及你如何执行这个限制?

你们中的任何一个人都有强烈的意见.



1> aku..:

一般规则是,如果您的方法不期望null参数,那么您应该抛出System.ArgumentNullException.投掷正确Exception不仅可以保护您免受资源损坏和其他不良事件的影响,还可以为您的代码用户提供指导,从而节省调试代码所花费的时间.

另请阅读有关防御性编程的文章


这是一个很好的c#答案,不是一个好的java答案:)
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有