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:
- Colisión de nombres: Dos partes del código pueden sobrescribir accidentalmente la misma variable global.
- Dificultad para depurar: Cambios en la variable pueden venir de cualquier parte del código.
- Dificultad para reutilizar el código: El código depende del estado global, lo que dificulta su modularidad.
- 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.