Refactorització 024 - Reemplaçament de Variables Globals amb Injecció de Dependències

Millora la qualitat del teu codi eliminant dependències ocultes amb injecció de dependències. Reduir l'acoblament i millorar la testabilitat farà el teu codi més net i mantenible. ??

martes, 11 de marzo de 2025 • 1 min de lectura • Equip Q2BSTUDIO

Empresa-Software-Apps

Trenca les Dependències Ocultes per a un Codi Més Net

Resum: Reemplaçar les variables globals amb injecció de dependències millora la capacitat de prova i redueix l'acoblament.

Problemes que resol:

  • Dependències ocultes
  • Alt acoblament
  • Dificultats en proves
  • Problemes de mantenibilitat
  • Ús indegut del patró Singleton

Passos per millorar el codi:

  1. Identificar variables globals usades al codi.
  2. Crear una abstracció que encapsuli aquestes variables.
  3. Passar les dependències explícitament mitjançant paràmetres o constructors.
  4. Refactoritzar el codi existent per adoptar la nova estructura amb injecció de dependències.
  5. Eliminar les declaracions originals de variables globals.

Exemple abans de refactorització:

// Variable global que emmagatzema la configuració de l'API  
const globalConfig = { apiUrl: https://api.severance.com };  

function fetchOuties() {  
  return fetch(`${globalConfig.apiUrl}/outies`);  
  // globalConfig no es passa com a paràmetre
}

Exemple després de refactorització:

function fetchOuties(parameterConfig) {  
  return fetch(`${parameterConfig.apiUrl}/outies`);  
}  

const applicationConfig = { apiUrl: https://api.severance.com };  

fetchOuties(applicationConfig); 

Millorant encara més: Creant una classe de servei

class ApiService {
  constructor(parameterConfig) {
    this.variableConfig = parameterConfig;
  }

  fetchOuties() {
    return fetch(`${this.variableConfig.apiUrl}/outies`);
  }
}

const apiService = 
  new ApiService({ apiUrl: https://api.severance.com });
apiService.fetchOuties();

Avantatges d'aquest enfocament:

  • Testabilitat: Es poden reemplaçar dependències en proves unitàries.
  • Contractes explícits: Les funcions declaren quines dades necessiten.
  • Escalabilitat: Facilita canvis en la configuració.
  • Menys acoblament: Redueix la dependència entre mòduls.

Limitacions: Si s'usa en excés, la injecció pot generar un excés de paràmetres i dificultar la lectura del codi.

Sobre Q2BSTUDIO:

A Q2BSTUDIO, experts en desenvolupament i serveis tecnològics, implementem principis com la injecció de dependències per garantir programari escalable, mantenible i d'alta qualitat. Apliquem les millors pràctiques perquè els nostres clients obtinguin solucions tecnològiques eficients i fàcils d'evolucionar.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.