FromXYZ vs Metodo sovraccaricato

3

Sto cercando di pensare al modo più pulito per implementare un paio di metodi che aprono un file.

Considera le seguenti firme del metodo:

public static DomainObject Load(Uri urlToFile)
{
    /* downloads file and calls Load(savedToFilename) */
}

public static DomainObject Load(string filename) 
{ 
    /* creates filestream and calls Load(stream) */
}

public static DomainObject Load(Stream stream) 
{ 
    /* does actual loading */ 
}

Sto cercando di implementare alcuni concetti da Pulisci codice , in particolare:

When constructors are overloaded, use static factory methods with names that describe the arguments. For example,

Complex fulcrumPoint = Complex.FromRealNumber(23.0);

is generally better than

Complex fulcrumPoint = new Complex(23.0);

Ora, so che non ho sovraccaricato i costruttori, di per sé (ne ho rifattorizzato), ma penso che il principio sia lo stesso. Quindi questo implica che i miei metodi di caricamento vengano rifatti a qualcosa del tipo:

public static DomainObject FromURI(Uri urlToFile);
public static DomainObject FromFile(string filename);
public static DomainObject FromStream(Stream stream);

Ma, tbh, penso che sia più intuitivo usare ciò che ho già ottenuto. Dal punto di vista del consumatore, sembra che Open prenderà la fonte che mi capita di avere, mentre l'altro metodo mi impone di pensare prima a quale sia la mia fonte e poi mi chiedo se esiste un metodo specifico per questo.

Quindi ti chiedo, dal tuo punto di vista più esperto, che è meglio e perché?

    
posta Steven Evers 11.10.2010 - 02:20
fonte

1 risposta

8

Penso che "Load" sia la strada da percorrere per alcuni motivi:

  • Il tipo di parametro è già presente nell'elenco dei parametri, perché specificarlo di nuovo nel nome del metodo?
  • Se ti capita di avere più metodi che producono qualcosa di uno stream in una classe, "FromStream" diventa un problema.
  • Nell'era dell'intelligence, è molto più logico digitare "Carica" e ottenere un elenco di possibili opzioni dei parametri, piuttosto che osservare tre diversi metodi (specialmente se iniziano più metodi rispetto a quelli di questo set " da ").
  • Un'altra buona regola empirica è "nomi metodi dopo verbi quando puoi", che vota a favore di qualcosa simile a "Carica" o almeno "Carica da ..."
risposta data 11.10.2010 - 06:15
fonte

Leggi altre domande sui tag