Se trata de efectos secundarios.
Al preguntar si var1es parte del estado se pierde el punto de esta pregunta. Claro que si var1debe persistir, tiene que ser una instancia. Cualquiera de los dos enfoques puede funcionar si se necesita persistencia o no.
El enfoque de efectos secundarios
Algunas variables de instancia solo se utilizan para comunicarse entre métodos privados de llamada a llamada. Este tipo de variable de instancia se puede refactorizar fuera de existencia, pero no tiene que ser así. A veces las cosas son más claras con ellos. Pero esto no está exento de riesgos.
Está dejando una variable fuera de su alcance porque se usa en dos ámbitos privados diferentes. No porque sea necesario en el ámbito en el que lo está colocando. Esto puede ser confuso. ¡Los "globales son malos!" nivel de confusión Esto puede funcionar pero simplemente no escalará bien. Solo funciona en los pequeños. No hay grandes objetos. No largas cadenas de herencia. No provoques un efecto yo yo .
El enfoque funcional
Ahora, incluso si var1debe persistir, nada dice que debe usar if para cada valor transitorio que pueda tomar antes de que alcance el estado que desea conservar entre las llamadas públicas. Eso significa que aún puede establecer una var1instancia utilizando nada más que métodos más funcionales.
Entonces, como parte del estado o no, aún puede usar cualquiera de los enfoques.
En estos ejemplos, 'var1' está tan encapsulado que nada más que su depurador sabe que existe. Supongo que lo hiciste deliberadamente porque no quieres sesgarnos. Afortunadamente no me importa cuál.
El riesgo de efectos secundarios.
Dicho esto, sé de dónde viene tu pregunta. He trabajado bajo desgraciada yo yo 'ing herencia que muta una variable de instancia en múltiples niveles en varios métodos y se han ido ardilla tratando de seguirlo. Este es el riesgo.
Este es el dolor que me lleva a un enfoque más funcional. Un método puede documentar sus dependencias y resultados en su firma. Este es un enfoque poderoso y claro. También le permite cambiar lo que pasa el método privado haciéndolo más reutilizable dentro de la clase.
La ventaja de los efectos secundarios
También es limitante. Las funciones puras no tienen efectos secundarios. Eso puede ser algo bueno, pero no está orientado a objetos. Una gran parte de la orientación a objetos es la capacidad de referirse a un contexto fuera del método. Hacer eso sin fugas de glóbulos por todas partes aquí y allá es la fuerza de OOP. Tengo la flexibilidad de un global pero está muy bien contenido en la clase. Puedo llamar a un método y mutar cada variable de instancia a la vez si lo deseo. Si hago eso, estoy obligado a dar al menos al método un nombre que aclare lo que está haciendo para que la gente no se sorprenda cuando eso suceda. Los comentarios también pueden ayudar. Algunas veces estos comentarios se formalizan como "condiciones de publicación".
La desventaja de los métodos privados funcionales
El enfoque funcional aclara algunas dependencias. A menos que esté en un lenguaje funcional puro, no puede descartar dependencias ocultas. No sabe, mirando solo una firma de métodos, que no le está ocultando un efecto secundario en el resto de su código. Simplemente no lo haces.
Publicaciones condicionales
Si usted y todos los demás miembros del equipo documentan de manera confiable los efectos secundarios (condiciones previas / posteriores) en los comentarios, la ganancia del enfoque funcional es mucho menor. Sí, lo sé, sigue soñando.
Conclusión
Personalmente, tiendo a métodos privados funcionales en cualquier caso si puedo, pero honestamente es principalmente porque esos comentarios de efectos secundarios condicionales previos / posteriores no causan errores de compilación cuando están desactualizados o cuando los métodos se llaman fuera de servicio. A menos que realmente necesite la flexibilidad de los efectos secundarios, preferiría saber que las cosas funcionan.