Obteniendo datos usando el método GetMusic(...)
. Si es así, probablemente sería demasiado esfuerzo usar una entidad adicional sin realmente necesitarla.
De hecho, en una situación en la que solo hay un parámetro de entrada, puede usar una clase personalizada. Pero si esa clase es el único lugar para usar, entonces si SongSignature
como dice el nombre de clase, tiene que ser usado específicamente para esta clase, eso es una mala práctica de usar "bolsas de parámetros", porque tiene mucha legibilidad.
Además, si alguien estúpida dice que SongSignature
debe haber una estructura, y en esa estructura no es un puntero a algunos datos que ser cambiado dentro de método, ese indicador sería en realidad nunca cambia, porque cada vez GetMusic
se llama, que tomará una copia de una bolsa de la propiedad.
Incluso si se trata de una clase, debe cambiar el descriptor de acceso para esa clase a public
, y en general este no es el mejor método para pasar argumentos a una función y obtener resultados de una función, porque tiene ya está recibiendo una transmisión de ese método.
Supongamos la siguiente situación:
Si en un equipo de un programador reemplaza los parámetros con una clase SongRequest
, segundo programador no encontró que se utiliza como un parámetro a una función (porque lucks información en una nombre de una clase), y lo cambió a una estructura en la siguiente iteración, el tercer programador usó este método de tal manera, que tiene que ser una clase (por ejemplo, utilizar referencias de clase dentro de SongRequest
) ... Como resultado, no uno realmente sabía por qué algo no funcionaba porque cada uno de ellos tenía domo justo cosa ... No hay excusa para usar una clase para un uso local en lugar de una declaración implícita de parámetros.
En general, usted tiene un buen posibilidades de conseguir una situación de este tipo en un futuro, porque:
- no es el que cambia su código (es decir
GetMusic
)
- alguien puede revisar el código y encontrar la clase 'SongReqest' es útil (por lo que la situación es aún peor, desde un uso local hasta un uso global de una clase)
- al agregar la clase
SongReuest
puede agregar dependencias adicionales para su método (si alguien cambia esta clase, lo más probable es que founction no compilará)
- usando
SongRequest
como property bag
lo bloquea solo como una clase, como se mencionó anteriormente.
- el uso de esta clase, método sería probablemente nunca compartirlo parámetros con otras llamadas a funciones (por qué razón?)
- por último, el uso de
SongRequest
clase sólo para el paso de parámetros para una función específica, da adicional huella de sobrecarga de la memoria, porque si se llama a este método a menudo, por un lado, creará muchos objetos innecesarios en la memoria que tienen que ser recolectados como basura, por otro lado, si tal método se usa raramente, simplemente no será práctico crear una clase para pasar varias variables a una sola llamada
Solo hay una razón real para usar la clase en lugar de un argumento de dos líneas: al programador le gustan esas llamadas y quiere hacer que todos los códigos sean "más bellos que antes", más monádicos, a pesar de que esto no es muy práctico y útil.
Nunca te recomendaría hacer un código como este hasta que quieras que se vea mejor.
En general, supongo que usando una clase personalizada para pasar argumentos para una función es una mala práctica.
La ventaja de agregar "más fácil" un nuevo parámetro en el futuro le costará más adelante porque cambia el contrato del método y puede afectar a los clientes existentes. Entonces, si se cambia el contrato, hágalo explícito ya que los clientes deberían estar al tanto. –
Solo una observación de que es posible que desee excluir las opiniones de su propio colega para evitar hacer una pregunta principal. –
No. El .NET framework no hace esto, suficiente decir. –