¿Por qué están 'out' parámetros en. net una mala idea?
Recientemente me preguntaron esto, pero he no tenido ninguna respuesta real además está complicando innecesariamente simplemente una aplicación. ¿Qué otras razones existen?
¿Por qué están 'out' parámetros en. net una mala idea?
Recientemente me preguntaron esto, pero he no tenido ninguna respuesta real además está complicando innecesariamente simplemente una aplicación. ¿Qué otras razones existen?
Bueno, no son una mala idea que creo. Dictionary<K, V>
tiene un TryGetValue
método que es un muy buen ejemplo por eso hacia fuera de los parámetros son a veces una cosa muy agradable de tener.
No debe abusar esta característica por supuesto, pero no es una mala idea por definición. Especialmente no en C# donde tienes que escribir el out
clave en declaración y llamada a la función que hace evidente lo que está sucediendo.
Son una buena idea. Porque a veces sólo quieren devolver múltiples variables desde un método, y no desea crear una estructura de clase "pesada" para esto. La envoltura de la estructura de clases puede ocultar la manera en que fluye la información.
Utilizo esto:
Si usted se preocupa acerca de la escritura de código confiable abrazando la inmutabilidad y la eliminación de los efectos secundarios, a continuación, fuera de los parámetros son absolutamente una idea terrible. Te obliga a crear mutable variables para tratar con ellos. (No es que C# admite readonly método de variables a nivel de todas formas (al menos en la versión que estoy usando, 3.5)).
En segundo lugar, reducir la composicionalidad de las funciones de obligar a los desarrolladores para establecer y ocuparse de las variables que recibirán los valores. Esto es molesto ceremonia. Usted no puede simplemente ir y componer expresiones con ellos que con cualquier cosa que se asemeja a la facilidad. Por lo tanto, el código de llamar a estas funciones se convierte rápidamente en un gran imperativo lío, proporcionando un montón de lugares para que los errores que ocultar.
-Parámetro son una mala idea en mi opinión. Aumentar el riesgo de efectos secundarios y son difíciles de depurar. La única buena solución son los resultados de función y aquí está el problema: para obtener resultados de la función, tienes que crear para cada complejo resultado una tupla o un nuevo tipo. Ahora debería ser bastante fácil en c#, con medicamentos genéricos y tipos anónimos.
Y por cierto: odio a los efectos secundarios también.
Me gustaría decir que su respuesta es irregular; es generalmente innecesaria complicación y hay por lo general un diseño más simple. La mayoría de los métodos que trabajan con usted .NETA no mutar sus parámetros de entrada, por lo que tener un método que utiliza la sintaxis es un poco confuso. El código se convierte en un poco menos intuitivo, y en el caso de un mal método documentado, no tenemos manera de saber cuál es el método para el parámetro de entrada.
Además, las firmas de método con parámetros de salida activará un Código de Análisis/FxCop infracción, si se trata de una métrica que importa. En la mayoría de los casos, hay una mejor manera para lograr la propósito de un método que utiliza un "fuera" de los parámetros y el método puede ser refactorizado para devolver la información interesante.
Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.