Cuando tomé mi primer curso de programación en la universidad, nos enseñaron que las variables globales eran malvadas & debe evitarse a toda costa (ya que puede desarrollar rápidamente código confuso e inmanejable). El año siguiente, nos enseñaron programación orientada a objetos y cómo crear código modular usando clases.¿Cómo puedo escribir clases que no dependen de variables "globales"?
Me parece que cada vez que trabajo con OOP, utilizo las variables privadas de mis clases como variables globales, es decir, pueden ser (y son) leídas y modificadas por cualquier función dentro de la clase. Esto realmente no me sienta bien, ya que parece presentar los mismos problemas que las variables globales tenían en lenguajes como C.
Así que supongo que mi pregunta es, ¿cómo dejo de escribir clases con variables "globales"? ¿Tendría más sentido fingir que estoy escribiendo en un lenguaje funcional? Con esto me refiero a que todas las funciones tomen los valores de retorno de los parámetros & en lugar de modificar directamente las variables de clase. Si necesito establecer cualquier campo, puedo tomar la salida de la función y asignarla en lugar de hacer que la función lo haga directamente. Esto parece que podría hacer un código más fácil de mantener, al menos para las clases más grandes. ¿Cuál es la práctica común?
"tener todas las funciones tomar parámetros y valores devueltos en lugar de modificar directamente las variables de clase. Si necesito establecer cualquier campo, puedo tomar la salida de la función y asignarla en lugar de tener la función de hacerlo directamente." Así me enseñaron a programar de manera eficiente, como fuente de reutilización, legibilidad (suponiendo que los nombres de tus funciones reflejen lo que hace la función), buena estructura y facilidad de modificación. – Mike