2012-06-23 9 views

Respuesta

5

Lo que hace que no entre en en la imagen es el número de acciones¹ - al menos en el sentido de que "oh, tengo más de 50 acciones en este controlador, comencemos otra".

La guía² debe ser: los controladores son un grupo lógico para las acciones que operan en el mismo tipo de objeto (el mismo tipo de modelo podría ser una mejor definición). Si ocurre que tiene un modelo tan rico en funcionalidad que hay 30 acciones separadas que se pueden realizar en él, continúe y póngalo en el mismo controlador.

En el otro lado de la moneda: si tiene modelos simples y se encuentra escribiendo controladores con solo unas pocas acciones cada uno, debería ser una razón para sentirse bien con la mantenibilidad de la aplicación en lugar de preocuparse .


Notas:

¹ Por supuesto, un controlador con esa cantidad de acciones es una señal de alerta para un posible abuso código para el número debe entrar en consideración - no sólo como una especie de regla dura .

² Y es realmente una guía: el objetivo aquí es construir un sistema sostenible, no seguir algunas escrituras religiosas.

+0

"los controladores son un grupo lógico para las acciones que operan en el mismo tipo de objeto (el mismo tipo de modelo podría ser una mejor definición)". ¿Suena como 1 entidad de controlador 1? – Elisabeth

+0

@Elisa: Suena así, pero también existe la posibilidad de que las entidades estén tan estrechamente relacionadas que realmente pertenezcan al mismo controlador. – Jon

+0

¿Qué hace que 2 entidades estén tan cerradas como para entrar en el mismo controlador? – Elisabeth

5

El factor principal que debería determinar cuándo crear un nuevo controlador es la lógica/funcionalidad que realizan. Usted querrá asegurarse de que separate concerns:

public class ProfileController { } 

public class MainController { } 

public class AccountController { } 

public class ShoppingCartController { } 

Cada uno de los controladores anteriores se utilizan para coordinar la comunicación entre sus servicios de dominio correspondientes/modelos y sus puntos de vista.

2

Como regla general, mantengo todas las acciones tan simples como puedo, si se hacen grandes o demasiadas, entonces veo si puedo crear funciones auxiliares.

Tengo un controlador por entidad de base de datos si es necesario.

Así, por ejemplo, me gustaría tener un controlador de usuario, un controlador de la compra, un elemento regulador, etc, etc

Creo que no hay reglas específicas. Es solo mantener todo lógico. Si es lógico para usted, entonces eso es todo lo que importa, a menos que esté en un equipo, entonces debe ser lógico para todos.

Espero que esto ayude.

Cuestiones relacionadas