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

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

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

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

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

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

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

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

6 ответов

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

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

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта