2011-05-30 12 views
6

Disculpas si esto se ha preguntado antes, y es difícil imaginar que no, pero no tiene una asociación de palabras clave obvia, por lo que es difícil de verificar.¿Debe el nombre del método 'Obtener' incluir el nombre de los parámetros?

Si tengo una clase C# con un par de métodos estándar como GetByCode(string code) y GetByCodeAndResourceType(string code, string resourceType), debería simplemente cambiar el nombre de ellos para ser un sobrecargado Get(...) ya que son distinguibles por la lista de parámetros?

Obviamente, puede haber situaciones en las que la misma firma de método puede ser necesaria para diferentes propósitos, pero aparte de eso, no veo la necesidad de nombres de métodos separados siempre que haya comentarios para intellisense.

Me interesa saber lo que cualquiera piensa que son los pros y los contras.

Respuesta

6

Si ambos hacen lo mismo (o devuelven el mismo valor) pero aceptan entradas diferentes, entonces sería mejor diferenciarlos sobrecargando los parámetros. Si hay alguna diferencia en lo que hacen o devuelven, entonces usaría nombres diferentes.

Otra razón para una diferencia en la denominación puede ser el rendimiento u otra característica que no es obvia (por ejemplo, una sobrecarga es mucho más lenta que la otra). Esto se puede detallar en documentos pero proporcionar diferentes nombres atrae más atención sobre esto.

3

Tendemos a utilizar la palabra Find en lugar de Get y sí, utilizamos el nombre del parámetro en el nombre del método.

Como señala, habrá casos en que los tipos de parámetros no proporcionen una firma única. Por eso optamos por los nombres largos porque son consistentes.

+1

+1 Sí, la consistencia es importante –

3

Creo que uno debe entender lo que hace un método por su firma. Una firma de método está compuesta por su nombre, su tipo de retorno y sus parámetros. Por lo tanto, repetir cualquiera de estos componentes en el nombre (por ejemplo, GetByName(string name) o List<string> GetNames*List*(..)) es completamente redundante.

Cuestiones relacionadas