2010-09-16 9 views
7

me pregunto si es un buen diseño si un método de extensión usa otro en la misma clase de extensión.método de extensión llamar a otro en la misma clase de extensión - ¿buen diseño?

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; 
    } 
} 

EDITAR Gracias por las respuestas. Y lo siento por la mala muestra.

+0

No está presentando ninguna dependencia externa nueva ni nada. Si elimina un método con dependencias, no se compilará. No hay desventajas reales en esto. –

Respuesta

6

Está bien. Su ejemplo es un poco trivial, por supuesto, pero considere otras situaciones en las que un método podría proporcionar sobrecargas (utilizando string.Substring como ejemplo ... el método de simulación ya no existe).

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 
    } 
} 

Sobrecargados de llamadas, obviamente, le permite mantener su lógica centralizada tanto como sea posible sin repetirse. Es cierto en los métodos de instancia, es cierto en métodos estáticos (incluidos, por extensión, métodos de extensión).

2

En mi humilde opinión, generalmente lo es, ya que reduce la cantidad de código que tiene que escribir y, por lo tanto, la posibilidad de cometer errores.

En el ejemplo anterior, sin embargo, creo que es excesivo debido a la simplicidad del método.

+0

Estoy de acuerdo. También podría llamar! IsNull() para comprobar IsNotNull(). – Rohrbs

0

Claro que es un buen diseño, y puede ser referido como DRY.

Esto, sin embargo, es un ejemplo muy trivial.

1

Sí, es una buena práctica. Considere la clase como un tipo de espacio de nombres y grupo relacionadas extensiones juntas.

Cuestiones relacionadas