Ho la seguente classe, questa classe come molti si basa su un parametro che entra in coppia.
Originariamente per comodità, li ho impostati come params Object[] values
e controllo se ne esiste un numero pari if (values % 2 == 0)
.
Codice di esempio:
using RVD = System.Web.Routing.RouteValueDictionary;
/// <summary>
/// Allows for quick building of similar RVDs.
/// </summary>
public class RVDBuilder
{
public RVD Template { get; protected set; }
public RVDBuilder(RVD template)
{
this.Template = template;
}
public RVDBuilder(params Object[] routeValues)
{
if (routeValues.Length % 2 != 0)
{
throw new Exception("parameters must come in pairs of two!");
}
}
}
Posso vedere due punti di vista qui:
- Questo aggiunge grande convenienza per il programmatore: cioè
new RVDBuilder("Key1", 1, "Key2", "2", ...);
- Questo non è sicuro come potrebbe essere: cioè
new RVDBuilder(Tuple.Create("Key1", 1), ...);
Speravo di ricevere informazioni su questo argomento / argomento.
- Dovrei forzare il programmatore ad usare una classe 'coppia'? (Come influirebbe sull'accoppiamento?)
- Dovrei renderlo più sicuro anche se sarà una soluzione facile da prendere in caso di errore?
- Il lancio di un'eccezione è il modo migliore per gestirlo o devo solo troncare?
- Aggiungendo un evento in modo che il programmatore possa scegliere come gestire la situazione è una buona pratica?
Nel complesso però, come posso identificare e decidere un metodo per gestire questa situazione? So che in generale dipende dall'impostazione del progetto, ma su questo argomento non c'è un vero mood / convention. Ci sono delle regole generali?
(Scusa se questo non è il giusto StackExchange per questa domanda. Riguarda il codice, ma ho pensato che è puramente ad esempio per aiutare a spiegare meglio la mia domanda di progettazione che si adatta meglio qui).