старшие товарищи, есть такая ситуация:
Есть класс class Product
и, допустим, поле String name
, которое можно изменить
так вот такой вопрос, как лучше поступить: изменить существующий объект или лучше пометить поле как final
и вернуть новый объект?
просто не совсем ясно уместна ли здесь иммутабельность (которая вроде по дефолту лучше мутабельности)
Используя иммутабельность, ты автоматом получаешь отсутствие большого количества потенциальных граблей. Конкарренси, тестирование, сложное поведение кода из-за большого количества состояний объектов, потенциальные npe и т. д. Иммутабельность практически всегда должна быть по умолчанию. Мутабельность должна быть обоснована (например, проведением замеров и проблемами с перформансом и ясным пониманием, что причина - создание лишних объектов именно в этом месте, что практически никогда не так).