Passer null à une méthode

Je suis dans le milieu de la lecture de l'excellent Code Propre

Une discussion concernant la transmission des valeurs null dans une méthode.

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

Il représente les différentes façons de traiter ce:

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;
}

Je préfère le les assertions approche, mais je n'aime pas le fait que les assertions sont désactivés par défaut.

Le livre enfin états:

Dans la plupart des langages de programmation il n'y a pas de bonne façon de traiter avec une valeur null qui est transmis par un appelant accidentellement. Parce que c'est le cas, l'approche rationnelle est d'interdire passage de la valeur null par défaut.

Il n'a pas vraiment comment vous le feriez appliquer cette restriction?

N'importe quel d'entre vous ont des opinions fortes.

source d'informationauteur toolkit