2011/5/19 Gustavo Garcia <[email protected]>

>
> Estoy mal?
>

No, no. Mal es una palabra extrema, estamos hablando de matices

En lo personal prefiero tener esto:
>
> public function *List*(int status, int pageSize, int pageIndex, int
> advertiser_id)
>
> a tener esto:
>
>   public function *ListByStatus*(int status)
>   public function *ListByStatusWithPager*(int status, int pageIndex, int
> pageSize)
>   public function *ListByStatusAndAdvertiserWithPager*(int status, int
> pageIndex, int pageSize, int advertiser_id)
>   public function *ListByAdvertiser*(int advertiser_id)
>   public function *ListByAdvertiserAndStatus*(int status, int
> advertiser_id)
>   public function *ListByAdvertiserWithPager*(int status, int pageIndex,
> int pageSize)
>
> Pues, a parte de repetir mucho código, hay lógica que podría repetirse en
> cada una de ellas (por ejemplo, siempre quiero que "DeletedAt == null") y en
> un futuro la lógica podría cambiar...
>

Cual seria el codigo repetido? la declaracion de los metodos o el contenido
del metodo? Si lo que te preocupa es el contenido del metodo, hay otras
maneras de evitarlo.

Por supuesto es necesario poner algo en el extremo opuesto de la balanza. En
mi caso la vetaja seria claridad para el cliente de la API, ejemplo, que
valor de status debo enviar cuando quiero cualquiera de ellos? Lo mismo para
advertiser.

Lo que yo suelo ver es que, en tu primera opcion, el codigo del metodo
tiende a ser demasiado grande. Otro de los puntos que veo en tu API es que
hay dos conceptos mezclados. Por ejemplo, status y pageIndex estan a dos
niveles distintos de abstraccion.

Para darte otra vision, EQO, por nuestro amigo el Tano, va mas alla y
plantea una clase distinta por cada query.

----------------------------------
Carlos Peix

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a