Sono d'accordo con le altre risposte finora che ha certamente un senso molto del tempo.
A volte, potresti volerti dare un po 'più di flessibilità definendo un'interfaccia e implementandola con i metodi di istanza. Questo ti dà la possibilità di utilizzare diversi metodi nel tuo codice lungo la strada.
Ecco un esempio di cosa intendo. Diciamo che si sta utilizzando questo metodo di tuo formatString
a qualche codice da qualche che assomiglia a questo:
public void DumpToConsole()
{
foreach (DataField field in m_fields)
{
Console.WriteLine(StringUtils.formatString(field.ToString()));
}
}
bene, questo è grande. (In realtà, è stupido, ma qualunque sia - solo per illustrazione!) Ma potresti rendere un tale metodo più flessibile accettando un'interfaccia , di cui potresti avere varie implementazioni che forniscono diversi tipi di formattazione:
public void DumpToConsole(IFormatter<DataField> formatter = null)
{
// Perhaps you could specify a default. Up to you.
formatter = formatter ?? Formatter<DataField>.Default;
foreach (DataField field in m_fields)
{
Console.WriteLine(formatter.Format(field));
}
}
Poi, invece di StringUtils
essere una classe di utilità statica, sarebbe semplicemente uno implementazione di una classe che offre un modo per formattare un certo tipo di oggetto (nel tuo caso, string
oggetti; nel mio esempio, questi immaginari DataField
oggetti).
Quindi questo è tutto un modo molto prolisso di dire, dipende. Se stai cercando la massima flessibilità lungo il percorso, forse, dovresti prendere in considerazione l'implementazione di un'interfaccia invece di utilizzare una classe helper statica.
Si noti che nel mio esempio sopra, un altro modo completamente accettabile di affrontare il problema potrebbe essere stato accettare un delegato Func<T, string>
invece di questa ipotetica interfaccia IFormatter<T>
. Questa è principalmente una scelta stilistica, secondo me. Ma spesso le interfacce diventano più realistiche quando ci sono più comportamenti che si desidera personalizzare; Ad esempio, definire i metodi che accettano 3, 4 o più delegati può diventare rapidamente ingombrante rispetto all'accettazione di una singola interfaccia.
FYI: i parametri del metodo devono iniziare con una lettera minuscola. (ad es. 'inputString') –
I nomi dei metodi dovrebbero in realtà iniziare con una lettera maiuscola, anche se si vogliono seguire le regole standard dei casing C#;) –
E i nomi dei metodi dovrebbero iniziare con una lettera maiuscola (es.' FormatString'), assumendoti Stai seguendo le convenzioni di codifica .NET: -> http://msdn.microsoft.com/en-us/library/ms229045.aspx – Pandincus