Jakie są ogólne wytyczne lub praktyczne zasady korzystania z obiektu specyficznego dla domeny w porównaniu do zwykłego ciągu lub liczby?
Przykłady:
- Klasa wiekowa a liczba całkowita?
- Klasa FirstName vs String?
- UniqueID vs String
- Klasa PhoneNumber vs String vs Long?
- Klasa DomainName vs String?
Myślę, że większość praktykujących OOP zdecydowanie powiedziałaby określone klasy dla PhoneNumber i DomainName. Im więcej zasad dotyczących tego, co czyni je ważnymi i jak je porównywać, łatwiej i bezpieczniej radzić sobie z prostymi klasami. Ale w przypadku pierwszych trzech jest więcej debat.
Nigdy nie spotkałem się z klasą „Age”, ale można argumentować, że ma to sens, biorąc pod uwagę, że musi być ona nieujemna (okej, wiem, że możesz się kłócić o ujemny wiek, ale to dobry przykład, że jest prawie równoważna prymitywnej liczbie całkowitej).
Ciąg znaków często reprezentuje „Imię”, ale nie jest doskonały, ponieważ pusty ciąg znaków jest prawidłowym ciągiem znaków, ale nie jest prawidłową nazwą. Porównanie zwykle odbywa się z pominięciem wielkości liter. Pewnie, że istnieją metody sprawdzania pustości, porównywania bez rozróżniania wielkości liter itp., Ale wymaga tego konsument.
Czy odpowiedź zależy od środowiska? Przede wszystkim interesuje mnie oprogramowanie o wysokiej wartości dla przedsiębiorstw, które będzie żyło i będzie utrzymywane przez ponad dekadę.
Być może zastanawiam się nad tym, ale naprawdę chciałbym wiedzieć, czy ktoś ma zasady dotyczące wyboru klasy zamiast prymitywnej.
people may be one or two years older in Asian reckoning than in the western age system
Age
klasy zamiast liczby całkowitej, gdy potrzebujesz dodatkowego zachowania zapewnianego przez taką klasę.