Modo alternativo per esporre che stai restituendo Nulla in un metodo

2

Sono un po 'in un vicolo cieco.

Diciamo che ho il modulo A che espone alcuni metodi che restituiscono oggetti e il modulo B che usa detti metodi dal modulo A. Il modulo A avrà situazioni in cui dovrà restituire Nothing.

Il problema è: certo che non voglio restituire nulla. Molti, molti libri, top-coder ed euristiche ti diranno. Tuttavia, l'uso dell'eccezione non è consentito a causa dell'uso massiccio del modulo A. Apparentemente ucciderebbe le prestazioni.

Finalmente, non vogliamo usare objet auto-instanciated e dobbiamo controllare lo stato interno per sapere se è effettivamente Nothing (come un check-null ...)

Quale sarebbe un'alternativa per il modulo A per esporlo può restituire qualcosa di vuoto (o nulla) e per tutti coloro che lo utilizzano come il Modulo B essere necessario per verificare tale caso (come le eccezioni firmate provare- cattura)?

Qualsiasi aiuto sarà davvero apprezzato! Sono praticamente fuori di soluzione e voglio fare qualcosa di pulito che sarà in grado di evolvere senza causare comportamenti ed errori indesiderati. Grazie

- EDIT -

Per chiudere questa domanda, i project manager hanno deciso di restituire Nothing ovunque. Accettano di avere un crash di produzione a causa di nulla dimenticato ... controlla ... Da quello che ho raccolto durante questo intervallo di tempo, direi che l'alternativa migliore sarebbe l'oggetto Try-patern, perché costringe il cliente a controllare perché è il ritorno un booleano e come usare la chiamata ... almeno in primo utilizzo.

    
posta Xavier Huppé 28.10.2015 - 20:54
fonte

4 risposte

1

Come ho menzionato in una modifica della domanda, il pattern try-object è la migliore alternativa a questo problema.

    
risposta data 02.11.2015 - 18:47
fonte
4

Puoi restituire una cosa o niente, quindi in qualche modo B deve sapere. Puoi restituire un elenco con 0 o 1 elemento e B potrebbe, ad esempio, trattarlo in modo uniforme. In pseudo-codice:

// Inside one of B's method
foreach(x : A.getThings()) {
    this.doAction(x);
}
    
risposta data 28.10.2015 - 22:00
fonte
0

Una soluzione è usare Pattern oggetti nulli nel modulo A. Invece di restituire null, il modulo A restituirà un altro tipo che è una rappresentazione di tipo "sicuro" di "Nothing".

    
risposta data 28.10.2015 - 22:45
fonte
0

Che ne pensi dei tuoi metodi restituire Nullable (Of Foo)? Almeno in questo modo il programmatore che scrive il chiamante può vedere il? e riconosce che potrebbe ottenere Nothing restituito.

Friend Shared Function GetSomething() As Nullable(Of SomeValueOrStructureType)

    
risposta data 26.02.2016 - 16:39
fonte

Leggi altre domande sui tag