2012-06-23 25 views

Odpowiedz

5

To, co na pewno daje , a nie, to liczba akcji¹ - przynajmniej w tym sensie, że "och, mam ponad 50 akcji w tym kontrolerze, zacznijmy następny".

Wytyczną² powinno być: kontrolery są grupą logiczną dla działań, które działają na tym samym typie obiektu (ten sam typ modelu model może być lepszą definicją). Jeśli tak się składa, że ​​masz model tak bogaty w funkcje, że istnieje 30 oddzielnych akcji, które można na nim wykonać, możesz je umieścić w tym samym kontrolerze.

Po drugiej stronie medalu: jeśli masz proste modele i piszesz kontrolerów z zaledwie kilkoma działaniami, to powinieneś być powodem, aby czuć się dobrze, mając na uwadze łatwość obsługi aplikacji, a nie powód do zmartwień. .


Uwagi:

¹ oczywiście, że kontroler z wielu działań jest czerwona flaga dla ewentualnych nadużyć kodu więc liczba powinny bierze się pod uwagę - nie tylko jako pewnego rodzaju twardej reguły .

² I jest to naprawdę wytyczna - celem jest zbudowanie systemu, który można utrzymać, a nie przestrzeganie niektórych pism religijnych.

+0

"Kontrolery są grupą logiczną dla działań, które działają na tym samym typie obiektu (ten sam typ modelu może być lepszą definicją)". Czy to brzmi jak jedna jednostka kontrolera 1? – Elisabeth

+0

@Elisa: To brzmi tak, ale istnieje również możliwość, że podmioty są tak blisko powiązane, że naprawdę należą do tego samego kontrolera. – Jon

+0

Co sprawia, że ​​2 podmioty są tak zamknięte, że dostają się do tego samego kontrolera? – Elisabeth

5

Głównym czynnikiem, który powinien określać, kiedy należy utworzyć nowy kontroler, jest logika/funkcjonalność, którą wykonują. Będziemy chcieli, aby upewnić się separate concerns:

public class ProfileController { } 

public class MainController { } 

public class AccountController { } 

public class ShoppingCartController { } 

Każdy z poprzednich kontrolerów są wykorzystywane do koordynowania komunikacji między odpowiednimi usługami domena/modeli i ich poglądów.

2

Zgodnie z ogólną zasadą, zachowuję wszystkie czynności tak proste, jak to tylko możliwe, jeśli są duże lub zbyt duże, wtedy widzę, czy mogę tworzyć funkcje pomocnicze.

Mam kontroler na jednostkę DB, jeśli to konieczne.

Tak na przykład, że mam kontrolera użytkownika, regulator Cart, pozycja kontroler itp itd

nie sądzę są jakieś szczególne zasady. Chodzi o to, żeby wszystko było logiczne. Jeśli jest to dla ciebie logiczne, to na ogół wszystko, co ważne, chyba że jesteś w zespole, musi być logiczne dla wszystkich.

Mam nadzieję, że to pomoże.

Powiązane problemy