Pracuję nad aplikacją ASP.NET MVC i przyzwyczaiłem się do umieszczania w moich modelach / obiektach elementów, które wydają się przydatne i wygodne.
Na przykład:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string FullName
{
get { return FirstName + " " + LastName; }
}
public string FormattedPhoneNumber
{
get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); }
}
}
Zastanawiam się, czy ludzie myślą o FullName
i FormattedPhoneNumber
łapaczach.
Ułatwiają tworzenie znormalizowanych formatów danych w całej aplikacji i wydają się oszczędzać wiele powtarzającego się kodu, ale zdecydowanie można argumentować, że format danych jest czymś, co powinno być obsługiwane przy mapowaniu z modelu na model widoku.
W rzeczywistości pierwotnie stosowałem te formaty danych w warstwie usług, w której wykonuję mapowanie, ale ciężko było ciągle pisać formaty, a następnie stosować je w wielu różnych miejscach. Na przykład używam „Pełna nazwa” w większości widoków, a konieczność wpisywania czegoś podobnego w model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
całym miejscu wydawała się o wiele mniej elegancka niż zwykłe pisanie model.FullName = entity.FullName
(lub, jeśli używasz czegoś takiego jak AutoMapper, potencjalnie w ogóle nic nie wpisując).
Gdzie narysujesz linię, jeśli chodzi o formatowanie danych. Czy formatowanie danych w twoim modelu jest „w porządku” czy jest to „zapach wzorowy”?
Uwaga: zdecydowanie nie mam html w moim modelu. Używam do tego pomocy HTML. Mówię ściśle o formatowaniu lub łączeniu danych (a zwłaszcza danych często używanych).
PhoneNumber
prawdopodobnie należy do własnej klasy (którą teraz zaimplementowałem). Ale FullName
tak naprawdę to on zmotywował mnie do napisania pytania. Ale chcę dowiedzieć się, czy generalnie sensowne jest umieszczenie formatowania / czesania danych itp. W modelu dla rzeczy, które będą obowiązywać w całej aplikacji. Z poniższych odpowiedzi wynika, że nie jest to anty-wzór, ale decyzję należy podjąć ostrożnie.