Ωραίο FindBug-άκι - an accident waiting to happen

Share on:

Ωραίο μικρό και απλό, ξεχασμένο στον κώδικα !

public Boolean isSomething() { if(this.something!=null){ return this.something.getSomething(); } return null; }

Αν το this.something δεν είναι null θα προσπαθήσει να επιστρέψει κάτι Boolean (ελπίζουμε οτι δε θα είναι και αυτό null, αλλά αν το this.something είναι null τότε του ΚΑΡΦΩΝΟΥΜE null στο return και φεύγουμε!

Findbugs says: (NP_BOOLEAN_RETURN_NULL) : A method that returns either Boolean.TRUE, Boolean.FALSE or null is an accident waiting to happen. This method can be invoked as though it returned a value of type boolean, and the compiler will insert automatic unboxing of the Boolean value. If a null value is returned, this will result in a NullPointerException.

με άλλα λόγια ο API writer και μάλλον, αυτός που θα την καλέσει κατά πάσα πιθανότητα θέλει να συμπεριλάβει το null σαν τον τρίτο δρόμο, οχι true όχι false κάτι άλλο, το θέμα είναι οτι έχει διαλέξει μάλλον, κακό τύπο και το NullPointerException παρόλο που στη λογική του το null είναι οκ .απλά περιμένει εκεί να συμβεί - είναι θέμα χρόνου!

ωραίο, μικρό και επιβλαβές

Findbugs -bugs descriptions εδώ.