Digamos que tengo un método de extensiónC#: La mejor práctica para la validación de "este" argumento a los métodos de extensión
public static T TakeRandom<T>(this IEnumerable<T> e)
{
...
Para validar el argumento e, debo:
A) si (e == null) throw new NullReferenceException()
B) si (e == null) throw new ArgumentNullException ("e")
C) No comprobar el correo
¿Cuál es el consenso?
Mi primer pensamiento es siempre validar los argumentos, por lo que lanzo una ArgumentNullException. Por otra parte, dado que TakeRandom() se convierte en un método de e, tal vez debería ser una NullReferenceException. Pero si se trata de una NullReferenceException, si trato de usar un miembro de e dentro de TakeRandom(), se lanzará NullReferenceException de todos modos.
Tal vez debería aprovechar el Reflector y averiguar qué hace el framework.
Hoy tuve exactamente esta pregunta en mi cabeza. Tengo que amar StackOverflow.com - Tiene todas las respuestas (y preguntas, a veces varias veces). :) – orj