Как я могу позволить заполнителю в раскрывающемся списке количества отображать что-то уникальное?

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

Если у меня есть изменяемый объект, я не уверен, какова его ценность, если он когда-либо используется за пределами моей непосредственной области. Предположим, я создаю MyMutableObject в локальных переменных метода, заполняю их значениями, а затем передаю их еще пяти методам. Любой из этих методов может изменить состояние моего объекта, поэтому должно произойти одно из двух:

  1. Я должен отслеживать тела из пяти дополнительных методов, думая о логике моего кода.
  2. Мне нужно сделать пять расточительных защитных копий моего объекта, чтобы гарантировать, что правильные значения передаются каждому методу.

Первое затрудняет рассуждение о моем коде. Во-вторых, мой код вписывается в производительность - я в любом случае имитирую неизменяемый объект с семантикой copy-on-write, но все время делаю это независимо от того, действительно ли вызываемые методы изменяют состояние моего объекта.

Если я вместо этого использую MyImmutableObject, я могу быть уверен, что то, что я установил, - это то, что значения будут для жизни моего метода. На расстоянии нет «жутких действий», которые меняют его из-под меня, и мне не нужно делать защитные копии моего объекта, прежде чем ссылаться на пять других методов. Если другие методы хотят изменить вещи для своих целей, они должны сделать копию & ndash; но они делают это только в том случае, если им действительно нужно сделать копию (в отличие от моего выполнения перед каждым вызовом внешних методов). Я избавляю себя от умственных способностей отслеживать методы, которые могут быть даже не в моем текущем исходном файле, и я избавляю систему от накладных расходов, бесконечно делая ненужные защитные копии на всякий случай.

(Если я пойду вне мира Java и, скажем, в мире C ++, я могу стать еще более сложным. Я могу сделать объекты похожими, как будто они изменяемы, но за кулисами делают их прозрачно клонированными при любом изменении состояния & mdash , это copy-on-write & mdash, причем никто не мудрее.)

0
задан Kevin Hansen 18 January 2019 в 11:22
поделиться