169 похожих чатов

Привет, считаете ли вы хорошей практикой создание таких классов неизменяемых

объектов, как здесь?
https://www.geeksforgeeks.org/create-immutable-class-java/

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

Считаю, что этот подход плохой и не стоит так делать никогда, потому что это создает оверхед использования ресурсов, когда клиентский код сам по себе не изменяет этот объект.

Думаю, что обеспечивать иммутабельность лучше на стороне клиентского кода так, чтоб вообще не модифицировать состояние объекта.

Какие мысли у вас по этому поводу?

Вот ещё додумал, что подход, описанный в статье, годится для защиты от дурака. Например, когда нужно обеспечить иммутабельность объекта из библиотеки.

6 ответов

11 просмотров
Edgar- Автор вопроса

Ты читал статью?

Edgar
Ты читал статью?

Так статья говно примитивное и несодержательное, что там читать Твоя позиция в общем-то тоже сводится к "не разобрался"

Да, этот подход хороший. Пример примитивный. Инкапсуляция — это не только и не столько сокрытие реализации, сколько защита состояния. И если важно ее предоставить, то это надо делать. И дело даже не в защите от дурака. Так, например, не стоит отдавать лишнего вовне.

Стать не очень. Гугли valueobject pattern по этой теме

Edgar- Автор вопроса
Дмитрий Баевский
Да, этот подход хороший. Пример примитивный. Инкап...

Похоже, что я забыл указать на один пункт из статьи, о чём собственно речь. Пункт о deep copy в конструкторе и deep copy в геттере. Эти deep copy выполняются каждый раз вне зависимости от того, что клиентский код 1)дурака собственно намерен попытаться изменить этот объект (в этом случае ок) 2)НЕ намерен изменить этот объект Одно из двух. Во втором случае deep copy избыточен

Edgar
Похоже, что я забыл указать на один пункт из стать...

Ну в статье имплементация говно. Если у тебя есть иммутабельные объекты, делай поля паблик файнал, всё.

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Господа всем привет. Для того чтобы страница индексировалась с запросом под каждый город. Это нужно делать отдельные страницы для каждого города, или есть варианты по лучше?
Владимир
8
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
а я честно сказать не понимаю - нахуя идти учиться на вышку или еще куда-либо и при этом нихуя не делать, типа зачем ? просто корку получить, а нахуй она нужна тогда ?
Eugene Неелов
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Карта сайта