tgoop.com/stringconcat/351
Create:
Last Update:
Last Update:
Снова побуду капитаном очевидностью.
Намедни обсуждали вопрос сравнения (equals) агрегатов. И здесь важно помнить: сравнение — это всегда контекстно зависимая операция.
Почему так?
Потому что невозможно сравнивать «вообще» — всегда есть цель, ради которой мы это делаем.
- Если нужно понять, что речь идет об одинаковых ссылках на участок памяти, то сравниваем собственно по ссылке
a === b
- Если нужно понять, что речь идет об одном и том же агрегате, достаточно сравнить идентификаторы.
a.id == b.id
- Если важно отследить изменения, которые произошли в процессе работы, тогда сравнивается содержимое.
a.id == b.id && a.field1 == b.field1
Причем механизм сравнения полей тоже может отличаться в зависимости от контекста
И здесь ключевой момент: невозможно заранее выделить универсальный набор параметров для сравнения. Критерии будут зависеть от конкретной задачи и того результата, который мы хотим получить.
Это, кстати, один из частых источников ошибок в проектах: мы пытаемся придумать «универсальный способ сравнения», а потом обнаруживаем, что он не подходит в половине случаев.
Поэтому каждый раз, когда возникает вопрос сравнения, полезно начать с простого: для чего мы это делаем?
BY StringConcat - разработка без боли и сожалений
Share with your friend now:
tgoop.com/stringconcat/351