2012-03-12 9 views
7

que tienen un método para la extracción de datos desde una base de datos, y yo quiero que esté presente:de nomenclatura métodos complicados

límite de cinco entradas, tipo de artículos es el boletín , tiene que estar activo (PublishDate < DateTime. ahora)

así que estoy pensando de nombrarlo GetFiveActiveNewslettersByCreatedDate()

Esto parece un poco largo para mí. Busqué en el sitio una buena manera de nombrar este tipo de cosas, ¿cómo lo manejarías?

+3

Nada malo con ese nombre, per se. Alternativamente, podría tener un método que tome un número máximo para regresar como parámetro. –

+3

Hardcoding to 5 es una mala práctica. Sugeriría la siguiente firma: 'GetActiveNewsletters (tamaño int32)' – Oybek

+1

El uso adicional de 'ByCreatedDate' es redundante, ya que' Active' ya tiene el significado del predicado de tiempo. Si usa 'ByCreatedDate', implicaría que está seleccionando con un predicado adicional. – Oybek

Respuesta

4

Para evitar esta nomenclatura específica, pensaría en hacer que el método sea genérico. Algo así como:

GetNewsLetters(int amount, bool onlyActive, SortOrder orderBy) 
12

¿Qué tal algo como esto en su lugar?

public IEnumerable<Newsletter> GetActiveNewsletters(int maxRecords = 5) 
{ 
    // ... 
} 

Top 5 sigue siendo el predeterminado, pero ya no es excesivamente específico.

+4

Recomiendo los parámetros predeterminados públicos porque se compilan en el ensamblado de llamadas, lo que puede provocar errores sutiles si el ensamblado llamado se actualiza sin recompilar y volver a implementar a todos los llamantes. –

+0

@MichaelStum: Buen punto. Supongo que depende de la situación. Para muchas/la mayoría de las aplicaciones esto probablemente no sea un problema ya que sería para algo así como una API pública. –

1

yo añadiría método parametrizada, como

GerEntries(T typeofEntity, DateTime date, int maxNumber)

y el método documento naturaly con comentarios

5

Yo recomendaría cambiar el nombre a: GetNewsletters(int recordCount=5) El número de boletines sería un parámetro para el método .

El resto se puede suponer y describir en el ///Summary.

+1

+1 por mencionar '/// Resumen' – Oybek

2

Nombre de tal manera que es evidente para cualquier desarrollador lo que hace el método. El código de autocomprensión es el rey. Si el nombre de su método es demasiado largo, probablemente esté haciendo demasiadas cosas diferentes dentro de él y sería un candidato para la refactorización.

En cuanto a su ejemplo específico, no tengo un problema con el nombre que ha dado.

8

La razón por la que evitaría hornear "cinco" en el nombre, personalmente, es lo que podría significar en el futuro.

Por ejemplo, ¿qué pasa si más adelante, hay cierta demanda de 10 boletines en ciertos escenarios en lugar de 5? Bueno, crearías un método adicional GetTenActiveNewslettersByCreatedDate(). Y ahora, usted tiene un 'patrón de diseño' que los desarrolladores subsiguientes seguirán cuando se necesiten 20, 50, 100 boletines informativos. Este es un diseño que se pudrirá, y puede evitarlo ahora mediante la parametrización de los cinco.

Por supuesto, esto podría ser YAGNI/generalidad especulativa. Si 5 realmente es algún tipo de magia, difícil, nunca cambiará la regla, entonces podrías hornearla con cuidado. Solo descubro que me he arrepentido de haber hecho y visto cosas así, muy a menudo.

Cuestiones relacionadas