Un esempio di questo problema:
Sto scrivendo una funzione che consente a un utente di trovare uno studente dal suo studente, quindi creo la funzione:
GetStudent(int id)
o GetStudentById(int id)
Quindi gli utenti vogliono ottenere uno studente da SSN, quindi creo una funzione GetStudent(string ssn)
o GetStudentBySSN(string ssn)
Quindi altri requisiti espongono GetStudent(string first, string last)
e GetStudent(string phoneNumber)
Questi non sono esempi particolarmente validi perché il primo / ultimo potrebbe non essere univoco, ma diciamo per il fatto che vuoi solo restituire il primo studente pertinente.
Il risultato di tutto questo è un'API gonfia.
Un'alternativa che ho sentito discutere: 1. GetStudent (Dictionary searchCriteria), dove la chiave è qualcosa come "id", "ssn", ecc e il valore è l'id corrispondente o ssn. L'implementazione quindi eseguirà l'analisi del dizionario e utilizzerà i criteri di ricerca inoltrati. Sembra meno intuitivo da usare e qualcuno dovrebbe consultare i documenti per vedere le opzioni (non la fine del mondo).
Quindi qual è la migliore pratica qui? C'è una terza opzione (migliore)? Cambia se stai costruendo una API web invece di una libreria? Restful sembra che sarebbe / student / {id} per ottenere da id, e non sono sicuro di cosa verrà dopo.