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