Досить поширене питання, це. Найважче - знайти дублікати.
Вам слід прагнути до прозорості . Що це означає, що, якщо у мене є вираз «е», я міг би зробити val x = e, і замінити eз x. Це властивість, яка порушує незмінність. Щоразу, коли вам потрібно прийняти дизайнерське рішення, максимізуйте для прозорості референс.
Щодо практичного питання, метод локальних varє найбезпечнішим із існуючих var, оскільки він не уникає методу. Якщо метод короткий, ще краще. Якщо це не так, спробуйте зменшити його, витягнувши інші методи.
З іншого боку, колекція , що змінюється, має можливість вирватися, навіть якщо її немає. Змінюючи код, ви можете потім передати його іншим методам або повернути його. Це та річ, яка порушує прозору прозорість.
З об’єктом (полем) відбувається майже все те саме, але з більш тяжкими наслідками. У будь-якому випадку об'єкт матиме стан і, отже, порушує прозорість. Але мати колекцію, що змінюється, означає, що навіть сам об'єкт може втратити контроль над тим, хто його змінює.