Javanese Online

Неизменяемый DTO

Сам по себе DTO — штука неоднозначная, но здесь не об этом.

Если данные, пришедшие от другого компьютера, представлены изменяемым объектом, изменение этого объекта должно приводить к изменению данных на исходном компьютере.

Если изменяемый объект хранит данные из файла, изменение этого объекта должно приводить к перезаписи файла.

Если информация из базы данных представлена изменяемым объектом, изменение этого объекта должно приводить к выполнению UPDATE в базе данных.

Если какой-то компонент описывает своё состояние изменяемым объектом, изменение этого объекта должно приводить к изменению состояния компонента.

Если изменяемый объект служит для описания данных (JSON, Protobuf, Externalizable или просто Builder), данные уже сформированы (метод вроде toJson, toByteArray, writeToStream, writeExternal, build вызван) и происходит изменение объекта, нужно вернуться назад во времени и применить изменения к созданным ранее объектам.

Во всех остальных 100% случаев DTO должны быть неизменяемыми.

Комментарии
{"type":"lessonComments","id":"a9d3ca26-389b-461b-9883-3b1c582a9a71","comments":[{"id":"b34bffc1-9d45-4dcd-8515-d20c8ce810ae","authorSrc":"Vk","authorId":"id458812626","text":"Абсолютно согласен.","added":1522400400000,"answers":[]},{"id":"11ff2507-3cd4-43e9-9cf2-b8aab3ca9d8e","authorSrc":"Vk","authorId":"id172594391","text":"Dto должен ВСЕГДА быть неизменяемым","added":1522400400000,"answers":[]}]}

Сообщить об ошибке

Javanese.Online в GitHub

Чаты и каналы в Telegram

RSS-лента