Cosa deve restituire un metodo GetSelectedIndex quando non viene selezionata alcuna riga

3

Sto creando un componente della tabella dell'interfaccia utente che restituisce una matrice di indici selezionati.

Alcuni valori di ritorno tipici sarebbero

var myRetVal1 = [0];//one value selected 
var myRetVal2 = [0,1,2,3,8,11];//multiple value selected

come puoi vedere, restituisco sempre un array.

Ho avuto un'idea di restituire -1 quando non è selezionato nulla, ma ho pensato che potrebbe essere fonte di confusione quando in ogni altra condizione viene restituito un array.

Quindi il controllo di un insieme di valori vuoto potrebbe essere

//returns -1
var selectedItems = tbl.GetSelectedIndex();
if(selectedItems !== -1){
   //we have data to process
}

o

//returns []
var selectedItems = tbl.GetSelectedIndex();
if(selectedItems.length > 0){
   //we have data to process
}

o

//returns null
var selectedItems = tbl.GetSelectedIndex();
if(selectedItems){
   //we have data to process
}

Forse sto facendo un accordo troppo grande su questo, ma c'è un'aspettativa standard per questo tipo di controllo?

Man mano che costruisco altri controlli devono essere conformi a un valore di ritorno vuoto standard o devono sempre restituire una versione "vuota" del tipo di reso previsto?

    
posta Brandon Boone 07.01.2012 - 23:11
fonte

2 risposte

5

Sarei d'accordo con entrambi i secondi. Non mi piace il primo perché stai cambiando il tipo di dati effettivo restituito (int piuttosto che array).

In modo ottimale, sceglierei la seconda perché ha un senso più semantico. Se stai restituendo un array di elementi selezionati, allora ha più senso (di nuovo, semanticamente) per controllare array.length === 0 rispetto a array === null .

    
risposta data 07.01.2012 - 23:22
fonte
6

Vorrei restituire un array vuoto. Mi dà fastidio quando le persone restituiscono null collezioni invece di raccolte vuote. La maggior parte di ciò che farei con il tuo valore di ritorno sarà iterando su di esso, mappandoci sopra ecc. E le mie funzioni funzioneranno correttamente con un array vuoto, ma si interromperanno o dovranno essere modificate per gestire null

Il peggio è quando qualcuno scrive una funzione che restituisce null per nessun elemento, solo l'elemento per 1 elemento e una matrice di elementi per più elementi. Può triplicare le dimensioni e la complessità del mio codice solo perché devo verificare tutte le diverse condizioni (non mi dispiace il codice complesso, ma mi dispiace codice inutilmente complesso).

    
risposta data 07.01.2012 - 23:25
fonte

Leggi altre domande sui tag