Mam aplikację, która wymaga użycia wielu różnych wyliczeń. Aplikacja może być podzielona na różne warstwy. Na potrzeby przykładu przyjmijmy trzy warstwy: zewnętrzną bibliotekę analityczną, logikę biznesową aplikacji i logikę interfejsu użytkownika/prezentacji.Zarządzanie partiami w wielu warstwach aplikacji
W wielu przypadkach wszystkie warstwy mogą wymagać wyliczenia reprezentującego tę samą koncepcję. Weźmy na przykład częstotliwość płatności. (np. roczny, półroczny, kwartalny itp.). Zewnętrzna biblioteka zapewnia własne wyliczenie, różne klasy w warstwie logiki biznesowej wymagają podobnego wyliczenia, a na końcu warstwa interfejsu użytkownika może potrzebować jej do prezentacji różnych opcji w menu rozwijanym itp.
Teraz normalnie chciałby chronić użytkownika każdej warstwy przed wewnętrznymi zależnościami i szczegółami implementacji, nie ujawniając typów z wewnętrznych zależności w publicznych interfejsach warstwy. Oznacza to, że nawet jeśli interakcja z biblioteką 3rd party wymaga użycia własnego wyliczenia "Frequency", musiałbym utworzyć ekwiwalent "Frequency" dla warstwy biznesowej i potencjalnie kolejną dla warstwy interfejsu użytkownika ...
Wszystko to wymaga dużej liczby mapowań w tył iw przód, z dużą ilością dodatkowych klas mapperów. Z drugiej strony, zaletą jest to, że każda warstwa może zdecydować o wykluczeniu wartości, których nie potrzebuje lub wsparcia z własnej wersji wyliczenia ...
Teraz, ponieważ mam do czynienia z lotem z wyliczeń, zastanawiałeś się, czy to na ogół dobra rzecz, czy też po prostu komplikuję rzeczy?
To nie jest dobra sugestia. Lepiej mieć wyliczenie blisko podmiotów, które będą z nich korzystać. Na przykład 'Order' może zawierać wyliczenie' OrderType', co ma sens, aby umieścić je w jednym folderze projektu. Ułatwia to ich zmianę zgodnie z logiką biznesową. To nie jest atrakcyjne, aby gromadzić takie różne wyliczenia w jednym miejscu "zwykłym". –
@MassoodKhaari Podział enum na oddzielne biblioteki pozwala na luźne połączenie warstw BLL i UI bez duplikacji kodu - jest to bardzo dobra sugestia. Umieszczenie dwóch rzeczy w jednym folderze * jest dobrym pomysłem, o ile te rzeczy mają być ściśle sprzężone, co nie ma miejsca w tym przypadku (iw tym przypadku faktycznie zaszkodzi rozdzieleniu problemów w ramach rozwiązania).Twoja krytyka nie jest prawdziwa. –