Каковы общие рекомендации или практические правила, когда следует использовать объект, специфичный для домена, против простой строки или числа?
Примеры:
- Возрастной класс против Integer?
- FirstName класс против строки?
- UniqueID против строки
- Класс PhoneNumber vs String vs Long?
- Класс DomainName против строки?
Я думаю, что большинство практиков ООП определенно сказали бы определенные классы для PhoneNumber и DomainName. Чем больше правил относительно того, что делает их действительными и как их сравнивать, тем проще и безопаснее работать с простыми классами. Но для первых трех есть больше дебатов.
Я никогда не сталкивался с классом "Возраст", но можно утверждать, что это имеет смысл, учитывая, что он должен быть неотрицательным (хорошо, я знаю, что вы можете утверждать, что для отрицательных возрастов, но это хороший пример, что он почти эквивалентен примитивному целому числу).
Строка обычно представляет «Имя», но она не идеальна, потому что пустая строка является допустимой строкой, но не допустимым именем. Сравнение обычно проводится без учета регистра. Конечно, есть методы для проверки на пустоту, сравнения без учета регистра и т. Д., Но это требует от потребителя этого.
Зависит ли ответ от окружающей среды? В первую очередь меня интересует корпоративное / ценное программное обеспечение, которое будет жить и обслуживаться, возможно, более десяти лет.
Возможно, я обдумываю это, но мне бы очень хотелось узнать, есть ли у кого-то правила, когда выбирать класс против примитива.
people may be one or two years older in Asian reckoning than in the western age system
Age
класс вместо целого числа, когда вам нужно дополнительное поведение, которое обеспечит такой класс.