2010-09-16 5 views
7

Mi chiedo se è un buon progetto se un metodo di estensione usa un altro nella stessa classe di estensione.chiama un altro nella stessa classe di estensione: un buon design?

public class ClassExtensions 
{ 
    public static bool IsNotNull<T>(this T source) 
     where T : class 
    { 
     return !source.IsNull(); 
    } 

    public static bool IsNull<T>(this T source) 
     where T : class 
    { 
     return source == null; 
    } 
} 

EDIT Grazie per le risposte. E scusa per il brutto campione.

+0

Non si stanno introducendo nuove dipendenze esterne o altro. Se elimini un metodo con dipendenze, non verrà generato. Nessun vero svantaggio di questo. –

risposta

6

Va bene. Il tuo esempio è un po 'banale, ovviamente, ma considera altre situazioni in cui un metodo potrebbe fornire overload (usando string.Substring come esempio ... il metodo finta non esiste già).

public static class Foo 
{ 
    public static string Substring(this string input, int startingIndex) 
    { 
     return Foo.Substring(input, startingIndex, input.Length - startingIndex); 
     // or return input.Substring(startingIndex, input.Length - startingIndex); 
    } 

    public static string Substring(this string input, int startingIndex, int length) 
    { 
     // implementation 
    } 
} 

Chiamare sovraccarichi ovviamente consente di mantenere la logica centralizzata il più possibile senza ripetersi. È vero nei metodi di istanza, è vero nei metodi statici (inclusi, per estensione, i metodi di estensione).

2

IMHO, in genere lo è, in quanto riduce la quantità di codice che si deve scrivere e quindi la possibilità di commettere errori.

Nell'esempio precedente, tuttavia, penso che sia eccessivo a causa della semplicità del metodo.

+0

Sono d'accordo. Potrebbe anche chiamare! IsNull() per verificare IsNotNull(). – Rohrbs

0

Sicuro che è un buon design, e può essere indicato come DRY.

Questo, tuttavia, è un esempio molto banale.

1

Sì, è una buona pratica. Considerare la classe come una sorta di spazio dei nomi e gruppo relative estensioni insieme.