Йдеться про побічні ефекти.
var1
Питання, чи є частиною держави, пропускає суть цього питання. Звичайно, якщоvar1
повинна зберігатися, вона повинна бути екземпляром. Будь-який підхід можна зробити, щоб працювати, чи потрібна наполегливість чи ні.
Підхід побічного ефекту
Деякі змінні екземпляри використовуються лише для зв'язку між приватними методами від дзвінка до виклику. Цей вид змінної екземпляра може бути відновлений після існування, але цього не повинно бути. Іноді з ними все зрозуміліше. Але це не без ризику.
Ви випускаєте змінну за межі сфери її застосування, оскільки вона використовується в двох різних приватних областях. Не тому, що це потрібно в тій області, яку ви розміщуєте. Це може заплутати. "Глобали - це зло!" рівень заплутаності. Це може працювати, але це просто не буде добре. Це працює лише в малому. Без великих об’єктів. Немає довгих ланцюгів успадкування. Не викликайте йо-йо ефект.
Функціональний підхід
Тепер, навіть якщо var1
повинно зберігатись, нічого не говорить про те, що ви повинні використовувати, якщо для кожного перехідного значення воно може отримати, перш ніж воно досягне стану, яке ви хочете зберегти між публічними дзвінками. Це означає, що ви все одно можете встановитиvar1
екземпляр, використовуючи лише функціональні методи.
Отже, частина держави чи ні, ви все ще можете використовувати будь-який підхід.
У цих прикладах 'var1' настільки інкапсульовано, крім того, що ваш налагоджувач знає, що він існує. Я здогадуюсь, що ви зробили це навмисно, тому що не хочете нас упереджувати. На щастя, мені все одно.
Ризик побічних ефектів
Це означає, що я знаю, звідки бере ваше запитання. Я працював у жалюгідному йо-йо «ІНГ спадок , яке мутує змінної примірника на декількох рівнях , в декількох методів і пішов білячої намагається слідувати за ним. Це ризик.
Це біль, що спонукає мене до більш функціонального підходу. Метод може задокументувати свої залежності та вивести у своєму підписі. Це потужний чіткий підхід. Це також дозволяє змінити те, що ви передаєте приватному методу, зробивши його більш корисним для використання в класі.
Перебіг побічних ефектів
Це також обмежує. Чисті функції не мають побічних ефектів. Це може бути хорошою справою, але це не орієнтоване на об'єкти. Велика частина орієнтації на об'єкт - це здатність посилатися на контекст поза методом. Виконання цього, не протікаючи всесвітня глобалізація, є силою OOP. Я отримую гнучкість глобальної, але вона гарно міститься в класі. Я можу викликати один метод і мутувати кожну змінну екземпляра одразу, якщо мені подобається. Якщо я це зроблю, я зобов’язаний хоча б дати методу назву, яка дає зрозуміти, що це, щоб люди не здивувалися, коли це станеться. Коментарі можуть також допомогти. Іноді ці коментарі формалізуються як "умови публікації".
Мінус функціональних приватних методів
Функціональний підхід дозволяє зрозуміти деякі залежності. Якщо ви не володієте чистою функціональною мовою, вона не може виключати приховані залежності. Ви не знаєте, дивлячись лише на підпис методів, що він не приховує від вас побічного ефекту в решті коду. Ви просто цього не робите.
Опублікувати умовні умови
Якщо ви та всі інші в команді надійно задокументуєте побічні ефекти (умови до / після публікації) у коментарях, то виграш від функціонального підходу набагато менший. Так, я знаю, мрію.
Висновок
Особисто я схильний до функціональних приватних методів у будь-якому випадку, якщо можу, але, чесно кажучи, це здебільшого тому, що коментарі до умовного побічного ефекту перед / після публікації не спричиняють помилок компілятора, коли вони застаріли або коли методи викликаються не в порядку. Якщо мені справді не потрібна гнучкість побічних ефектів, я краще просто знаю, що все працює.