public RegistrationController(IregistrationList registration, IDystans _dys, IGrupa _gr, IPlec _plec, ICreatingFilters _filters, INewRecord _inew, IDataVerification _idata, ISMTP_Configuration _ismtp, IDescriptionVerificationNumber _desc
,ICheckWerification _icheck,IRandomNumber _irandom,IExceptionBase _iexception
, IDataForDescription _idataDescription, IDescriptionEndCreate _iend, IUniqueException _ithrow, IFiltersOperations
ifiltersOpereations, IFilterBool ifilterBool, IValueFilters
ivalueFilter)
No faktycznie to pan pojechał (stworzyłem anty wzorzec (wstyd i hańba)).
Cóż z tym zrobić szybki rzut oka na kod, pierwsze rozwiązanie dzielimy kontroler na kilka mniejszych.
W tym kontrolerze mam:
- rejestracje użytkownika,
- validacje email,
- lista zarejestrowanych,
- dodawanie grupy kolarskiej.
1. Podział kontrolera.
Usunąłem z kontrolera interfejsy dotyczące listy zarejestrowanych, przypomniałem sobie że stworzyłem klasę, która łączy w sobie wszystkie filtry, trzy interfejsy zastąpiłem jednym, wydaje mi się że to wzorzec Fasada ale muszę się upewnić. Teraz konstruktor wygląda tak:
public RegistrationController(INewRecord _inew, IDataVerification _idata, ISMTP_Configuration _ismtp, IDescriptionVerificationNumber _desc, ICheckWerification _icheck, IRandomNumber _irandom, IExceptionBase _iexception, IDataForDescription
_idataDescription, IDescriptionEndCreate
_iend, IUniqueException _ithrow, ICreatingFilters
_ifilters)
Trochę lepiej, teraz wyrzucę jeszcze walidacje email, to powinno mi dać o pięć interfejsów mniej.
Po usunięciu walidacji emaila konstruktor wygląda tak:
public
RegistrationController( IExceptionBase
_iexception , ICreatingFilters _ifilters)
2. Kolejny podział.
Nowo stworzony kontroler walidacja ( WerificationEmail) email przejął część interfejsów po Registration kontroler jest ich stanowczo za dużo bo aż dziewięć, no cóż należałoby zmniejszyć ilość, wydzielić kolejne zależności.
Podsumowując co spowodowało błąd zapomniałem o pierwszej zasadzie Solida, pojedynczej odpowiedzialności przez kontroler to też klasa!
Kolejne kroki to nic tylko wydzielanie zadań do nowych klas, z jednej strony mam więcej kontrolerów ale zakres ich odpowiedzialności jest znacznie mniejszy są dużo prostsze. Ilość widoków nie uległa zmianie, zależą od akcji w kontrolerach, teraz są przynajmniej poukładane w katalogi odpowiednie.
Brak komentarzy:
Prześlij komentarz