Ну если я скажу:
"Иммутабельность слишком много полезных плюсов даёт, тут не объяснить, поэтому идём дальше"
то меня закидают помидорами
У меня есть пример из текущего проекта, который и про иммутабельность и про АТД.
На клиент отдается модель, в которой помимо самого пейлоада есть пачка полей
CanRead; CanBlock; CanDelete; etc. Эти поля с пермишенами само собой мутабельные булевые проперти. Так вот, когда тебе пришла в коде такая модель, невозможно понять, эти поля в false потому что доступа нет, или потому что их еще не проставили как надо.
В то же время, когда у тебя модель immutable таких сомнений нет. А если сюда еще приплести таплы - то можно вообще пейлоад и модель пермишенов сделать таплой, тогда вообще никаких сомнений не окажется