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

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

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

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

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

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

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

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

6 ответов

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

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

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

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

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

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

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

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

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта