Ho qualcosa qui che mi impallidisce un po '.
Diciamo che mi scrivo questa API (in TS), controlla alcune di queste proprietà:
export class MyAPI{
propertyThatShouldContainSuffix:Array<string>; // like .jpg or .mp3
somethingElses:Array<SomethingElse>; //instances of some class
enumProperty:SomeEnum; // enum SomeEnum{a,b,c,d}
constructor(object){
/*
this object is input by the API consumer,
and its properties will be assigned to the new fields of
the new instance
*/
}
}
Esempio di utilizzo valido:
var myApi = new MyAPI({
propertyThatShouldContainSuffix : ["img.jpg","video.mp4" ...],
somethingElses : [new SomethingElse(/*yada yada*/),new SomethingElse(/* whateverrr*/) ...],
enumProperty:2
});
Input che potrebbe causare problemi:
var myApi = new MyAPI({
propertyThatShouldContainSuffix : ["img","video",5 ...],
somethingElses : [new SomethingElse(/*yada yada*/),new SomethingTotallyElse(/* whateverrr*/) ...],
enumProperty:6
});
Come puoi vedere, la prima proprietà è una serie di stringhe che devono avere un suffisso, come un'immagine, che dovrebbe essere .jpg o .png o altro. C'è una serie di oggetti che dovrebbero contenere alcuni campi, e infine un campo enum, diciamo che va da 0 a 3.
Ora funziona tutto bene e roba quando si inseriscono i valori previsti (ad esempio, tutte le stringhe nel primo array hanno il suffisso giusto e così via).
Ma poi ho pensato che avrei dovuto gestire input sbagliati, come un utente che invierà tutti i suoi nomi di immagine senza alcun suffisso, o mi darà un "9" come input per l'enum, invierò oggetti invece di matrici, e così on.
MA! ed ecco il problema: quanto lontano dovrei andare con questo? dovrei controllare che ogni proprietà sia corretta (ad esempio, ciò che si suppone essere un array è in realtà un array, che tutti i "supposti per essere suffissi" sono suffissi, che tutti i "somethingelses" contengono tutti i campi corretti?
Perché se lo faccio, questo è un casino di overhead su ogni creazione di un'istanza di oggetto MyAPI.
O dovrei fare qualcosa di veramente semplice come controllare se non ha sbagliato a scrivere un campo nell'oggetto (quindi esponendo gli utenti indifesi ai pericoli di "ma perché non funziona? stupida stupida API!")?
O qualsiasi cosa tra?