Есть ли название для практики, позволяющей избегать использования типов языков программирования? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь убедить коллег прекратить писать код, подобный этому (пример на java):

class Person {
    Long id;
    String name;
    String surname;
}

и писать код, подобный этому:

class Person {
    PersonId id;
    PersonName name;
    PersonSurname surname;
}

По сути, я хочу избежатьчрезмерное использование Strings ', Longs' и использование выделенных типов, соответствующих домену.Это не новая концепция, методология или практика (как бы вы ее ни называли), поэтому у нее, вероятно, уже есть имя.Вероятно, есть много людей, которые уже написали плюсы и минусы такого подхода, но я не могу найти ни одного, потому что не знаю, что искать.

1 Ответ

0 голосов
/ 21 ноября 2018

Да, эта практика называется Avoiding Primitive Obsession.

Согласно этой статье :

Запах: Примитивная одержимость использует примитивные данныетипы для представления доменных идей.Например, мы используем String для представления сообщения, Integer для представления суммы денег или Struct / Dictionary / Hash для представления конкретного объекта.

Исправление: как правило, мы вводим ValueObject вместо примитивных данных.

Инструменты: Некоторые языки делают это проще или сложнее для вас.

В таких языках, как C # и Java, может быть болезненно создавать сотни крошечных типовпросто оборачивая простую строку или int.Например, у вас будет много таких классов:

class PersonName {
    public String value;
    public PersonName(String value) {
        this.value = value;
    }
}

Но в языках ML , таких как F #, создание простых типов обертки тривиально:

type PersonName = PersonName of string

Несколько хороших статей по теме:

...