Progettazione dell'interfaccia per trovare uno di qualcosa o una lista

2

Sto sviluppando un modello di chiamata telefonica e penso al modo migliore per progettare l'interfaccia.

Un'idea di base è che una chiamata ha un identificatore di chiamata univoco. Ho un elenco di chiamate e trovare una chiamata specifica è facile da callid.

Ogni chiamata ha zero o più parti. Una parte ha un identificativo del dispositivo (ad esempio l'estensione 201) e uno stato. Ad esempio, la mia estensione 201 può essere avvisata o stabilita o qualsiasi altra cosa.

Ho una classe per rappresentare una chiamata che ha funzioni per trovare una parte nella chiamata, ho le seguenti funzioni findxxx:

party* find_party_by_dn(const std::string& dn) const;
int find_parties_by_dn(const std::string& dn, std::list<party*> pties) const;

find_party_by_dn sembra ok, ma ha un problema nel senso che una chiamata può avere 2 parti con lo stesso identificatore di dispositivo. Ad esempio, un utente può mettere una chiamata in attesa e fare una nuova chiamata di consultazione su un altro dispositivo. Nel qual caso la chiamata ha una festa con dn 201 in stato di attesa e un'altra parte con dn 201 e composizione di stato per esempio.

Quindi, se uso la funzione find_party_by_dn, verrà restituito solo il primo party nell'elenco con questo dn.

Quindi ho pensato ah, perché non restituire (bene tramite riferimento) un elenco di parti con un dato dn. Da qui la seconda funzione. Sembra un'interfaccia utile? Potrebbe essere migliorato?

Ho anche queste funzioni:

party* find_party_by_state(const std::string& dn, pstate state) const;
party* find_party_by_states(const std::string& dn, int states) const;

In questo caso, il chiamante deve specificare uno stato specifico o un numero di stati, ad es. stato1 | Stato2

Sto cercando feedback su questa interfaccia. Sembra logico? Potrebbe essere migliorato per renderlo più user friendly o robusto?

    
posta user619818 04.09.2013 - 12:31
fonte

1 risposta

0

Con le tue funzioni find_party_by_dn / find_parties_by_dn , vedrai che in pratica solo uno di essi verrà usato (prevedo che sarà find_party_by_dn in quanto è quello più facile). Il motivo è perché l'utente della funzione non saprà se e quando la ricerca di un DN restituirà più risultati. Nel tuo caso particolare, dubito strongmente della validità della possibilità che un DN rappresenti più parti in una chiamata, ma se hai qualcosa del genere, è meglio avere solo una singola funzione che restituisca una lista degli elementi trovati. Se ce n'è solo uno, la lista sarà semplicemente lunga.

Con il tuo find_party_by_state / find_party_by_states , c'è meno confusione su quale funzione usare, ma avere due funzioni rende l'interfaccia più complicata del necessario. Si potrebbe facilmente offrire una funzione find_party_by_state che accetta un bit-saggio o una combinazione di uno o più stati. Non è necessario disporre di una funzione separata per il caso speciale di ricerca su uno stato.

    
risposta data 04.09.2013 - 19:47
fonte

Leggi altre domande sui tag