Questo è nel contesto di un'architettura client-server, anche se non penso che siano necessarie le impostazioni architettoniche per risolvere il problema.
Ho una funzione il cui output può essere classificato in diverse categorie:
function makeCar() { /* make a car */ }
Ora, per decidere la struttura per il valore di ritorno di makeCar
, ho diverse opzioni:
Opzione 1
Restituisce valori interi e una struttura dati che associa i valori interi a diversi tipi di automobili.
Esempio:
codeToCar = {
"1": {
"model": "Jaguar XJS",
"color": "Black",
"year": "1975"
},
"2": {
"model": "Chevrolet Camaro",
"color": "Blue",
"year": "1966"
}
...
}
In questo caso, la funzione makeCar
restituirebbe le chiavi di codeToCar
.
Opzione 2
Restituisci l'oggetto auto stesso e elimina i codici interi.
Opzione 3
Restituisce una struttura ibrida con alcuni codici interi e alcuni valori specifici.
Esempio:
codeToColor = {
"1": "Black",
"2": "Blue",
...
}
codeToMaker = {
"1": "Jaguar",
"2": "Chevrolet",
...
}
In questo caso, la funzione makeCar
potrebbe restituire
{
"color": 2,
"maker": 1,
"model": "Camaro"
}
Quali sono i pro e i contro dell'uso delle diverse opzioni?
Modifica:
Credo che avrei dovuto elaborare il contesto di più. Quindi in pratica la funzione makeCar
viene eseguita su un browser client e il valore di ritorno della funzione viene passato al server in una richiesta HTTP. Qualsiasi rappresentazione per il tipo di ritorno di makeCar
sul lato client verrebbe alla fine tradotta in una rappresentazione dell'oggetto completo ( opzione 2 ) sul server.
I due parametri che ho scelto per il confronto tra le diverse opzioni sono:
- Numero di byte trasferiti su HTTP
- Estensibilità nel caso in cui vengano aggiunte nuove proprietà alle auto o aggiunti nuovi valori a una proprietà auto esistente.
I, tuttavia, sarebbe anche interessato a sapere quali altri parametri potrebbero essere usati ( nel contesto corrente ) per confrontare le opzioni disponibili, insieme alla scelta tra le diverse opzioni in base ai parametri scelti.