Ci sono molti approcci a questo e mentre sono d'accordo con Becuzz in una certa misura che di solito dovresti seguire le convenzioni della lingua / squadra, non sempre è completamente tagliato e asciutto. In Java, ci sono idee in competizione sul modo migliore per affrontare questo genere di cose e quale sia la risposta giusta dipende dal contesto del metodo.
Una cosa che vorrei prima provare a disattenderti è che il ritorno -1 è un valore "casuale" o un numero magico. Davvero non dovresti essere codificato per il valore specifico. In tal caso, è necessario verificare se non sono stati trovati valori inferiori a 0. Ho visto che supposizioni del genere portano a bug. Ad esempio, in Java Integer.compare
viene implementato utilizzando la sottrazione. Ciò significa che praticamente qualsiasi int (positivo o negativo) può essere restituito, ma ho visto codice che presuppone che le chiamate di confronto restituiscano solo -1, 0 o 1. Un altro caso in cui è il punto è Arrays.binarySearch
che, quando un elemento non è found restituisce un numero negativo che indica dove si troverebbe l'elemento nell'ordine se fosse nell'array.
Questi tipi di approcci sono utili perché restituiscono più informazioni semplicemente "non trovate". Ci sono altri casi anche se approcci diversi sono comuni. Ad esempio, un metodo pensato per recuperare una raccolta di elementi che soddisfano un determinato criterio potrebbe restituire un null
. Un'altra opzione è quella di restituire una collezione vuota. Nella maggior parte dei casi, quest'ultimo è preferibile perché non ci si deve preoccupare dei controlli del puntatore nullo e di solito non sono richiesti controlli se tutto ciò che si vuole fare è iterare sui risultati. Il ritorno di null
è comune e previsto in Java, ma è anche problematico. Un'altra opzione potrebbe essere quella di lanciare un'eccezione, ma che è generalmente scoraggiata a causa del sovraccarico di creare una traccia di stack che di solito è sopravvalutata ma reale.
Il punto è che non hai bisogno di seguire ciecamente le convenzioni se riesci a ottenere risultati superiori. Ma al posto di ciò, fai ciò che le persone si aspettano.