Codigo limpio y refactorización

🔴 Problema con las variables globales

El uso excesivo de variables globales puede hacer que el código sea difícil de mantener, depurar y escalar.
Los problemas más comunes incluyen:

  1. Colisión de nombres: Dos partes del código pueden sobrescribir accidentalmente la misma variable global.
  2. Dificultad para depurar: Cambios en la variable pueden venir de cualquier parte del código.
  3. Dificultad para reutilizar el código: El código depende del estado global, lo que dificulta su modularidad.
  4. Reducción de la legibilidad: Se pierde el control sobre dónde y cómo se modifican las variables.

Aquí se usa una variable global para almacenar la configuración de un sistema.
⚠️ Cualquier parte del código puede modificarla sin control.

❌ Código incorrecto en Java

Ahora encapsulamos la variable global dentro de una clase con métodos de acceso.
🔹 Beneficios de esta solución:

  • La variable no puede ser modificada directamente.
  • Se establecen reglas de acceso.
  • El código es más seguro y mantenible.
1public class Configuracion {
2    public static String idioma = "ES"; // ⚠️ Variable global accesible en toda la aplicación
3}
4
5public class Aplicacion {
6    public static void main(String[] args) {
7        System.out.println("Idioma actual: " + Configuracion.idioma);
8        cambiarIdioma("EN");
9        System.out.println("Nuevo idioma: " + Configuracion.idioma);
10    }
11
12    public static void cambiarIdioma(String nuevoIdioma) {
13        Configuracion.idioma = nuevoIdioma; // ⚠️ Modificación global no controlada
14    }
15}

✅ Código corregido en los 4 lenguajes

📌 Buenas prácticas para evitar variables globales

1. Usar variables locales siempre que sea posible.
2. Encapsular datos en clases o módulos.
3. Usar métodos de acceso (getters y setters) en lugar de modificar directamente.
4. Aplicar patrones como Singleton para configuraciones globales.
5. En JavaScript y TypeScript, usar const en lugar de let para evitar modificaciones accidentales.

1public class Configuracion {
2    private static String idioma = "ES"; // 🔒 Ahora es privada
3
4    public static String getIdioma() {
5        return idioma;
6    }
7
8    public static void setIdioma(String nuevoIdioma) {
9        if (nuevoIdioma.equals("ES") || nuevoIdioma.equals("EN")) {
10            idioma = nuevoIdioma;
11        }
12    }
13}
14
15public class Aplicacion {
16    public static void main(String[] args) {
17        System.out.println("Idioma actual: " + Configuracion.getIdioma());
18        Configuracion.setIdioma("EN");
19        System.out.println("Nuevo idioma: " + Configuracion.getIdioma());
20    }
21}

📌 Conclusión

  • 🚀 Reducir el uso de variables globales mejora la modularidad y la mantenibilidad.
  • 🔥 Encapsular datos y usar métodos de acceso evita cambios inesperados.
  • 🛠️ Aplicar patrones como Singleton ayuda a gestionar configuraciones globales.