En VB.NET, ¿cuál es mejor usar: sobrecarga de función o parámetros predeterminados?Sobrecarga de funciones en comparación con los parámetros predeterminados en VB.NET?
Respuesta
¿El código va a ser utilizado por otros idiomas? Si es así, eso balancea la balanza hacia sobrecargas teniendo en cuenta la respuesta de Hamish. En particular, C# no admite parámetros opcionales, pero ...
Es cierto que esto no impediría que alguien use su código de C#, podría ser una molestia para ellos.
Si hay muchos parámetros y representan lógicamente algo, es posible que desee considerar encapsularlos juntos, de la misma manera que Process
funciona con ProcessStartInfo
. Eso es particularmente bueno desde C# debido a los inicializadores de objetos.
Si esto es para la construcción, también puede considerar el patrón del generador como una variante de esto. Por ejemplo, en Protocol Buffers puedo hacer algo como:
Person jon = new Person.Builder { Name="Jon", Age=32,
Spouse="Holly", Kids=3 }.Build();
el que termina siendo muy legible creando al mismo tiempo una persona de una sola vez (en una expresión, y sin tener que mutar la propia persona - de hecho el mensaje el tipo es inmutable; es solo el constructor el que no lo es).
si los parámetros son opcionales (es decir, las sobrecargas son un subconjunto de los parámetros que acepta la firma de procedimiento completa), entonces los parámetros predeterminados u opcionales tendrían más sentido.
Si la sobrecarga permite un tipo diferente para el parámetro o es un parámetro semánticamente diferente que la rutina interpretará de manera diferente, entonces las sobrecargas tendrían más sentido.
excelente respuesta – baash05
FYI
Si desea agregar un parámetro a una función o un método que se llama desde otros conjuntos, entonces:
Usted puede sobrecargar al hacer una función adicional con el parámetro adicional.
O puede agregar un parámetro opcional, PERO: ¡Tiene que recompilar todos los ensamblajes que llaman a esta función, incluso si no necesitan usar el nuevo parámetro opcional! Esto no suele ser lo que la gente espera (especialmente aquellos acostumbrados a cómo funciona VB6). Básicamente, no se puede deslizar en un nuevo parámetro opcional a una función y se espera que sea totalmente compatible con versiones anteriores. Además, tal como lo entiendo, si cambia el valor predeterminado, debe reconstruir todos los ensamblados que llaman para que el cambio funcione.
- 1. sobrecarga de funciones con parámetros const
- 2. Valores predeterminados en argumentos en funciones C y sobrecarga de funciones en C
- 3. Declaraciones múltiples de funciones C++ con parámetros predeterminados
- 4. Adjuntar parámetros con cierres de javascript a parámetros predeterminados en funciones anónimas
- 5. Funciones con los tipos de parámetros genéricos
- 6. Parámetros predeterminados en C
- 7. Palabra clave "Sobrecarga" en VB.NET
- 8. Comparación de tipos en VB.NET
- 9. Operador de comparación sobrecarga
- 10. Punteros de función con parámetros predeterminados en C++
- 11. sobrecarga de funciones en OCaml
- 12. sobrecarga de funciones en C++
- 13. F #: funciones de sobrecarga
- 14. sobrecarga de funciones en C
- 15. Parámetros de plantilla predeterminados con declaración directa
- 16. Parámetros de método predeterminados en C#
- 17. ¿Cómo uso las funciones sobrecargadas con argumentos predeterminados en los algoritmos?
- 18. Parámetros de constructor predeterminados en pyyaml
- 19. sobrecarga de funciones con puntos suspensivos
- 20. ¿Los parámetros predeterminados son una mala práctica en OOP?
- 21. sobrecarga de funciones en Python: Falta
- 22. C# - ¿Cómo saltarse parámetros con valores predeterminados?
- 23. Motivo técnico para no tener parámetros predeterminados en Java
- 24. parámetros opcionales en las funciones de Python y sus valores predeterminados
- 25. ¿VB.NET tiene funciones anónimas?
- 26. Evitar llamadas a funciones heredadas en VB.NET
- 27. sobrecarga de funciones Firmas Haskell
- 28. Comparación de la sobrecarga del operador en php
- 29. Omisión de los parámetros de funciones opcionales en JavaScript
- 30. sobrecarga de operadores comparación en los resultados de C++ en "operador no válido <"
Otro "Pro" de sobrecargas es que puede ver cuántas referencias tiene cada sobrecarga. Somenthing no puedes hacer con parámetros opcionales. – Burnsys