Mi sembra che ci sia molta ancora confusione, e mi sembra che questa confusione porti a decisioni spesso sbagliate. Tendiamo ad essere un po’troppo assolutisti e abbiamo questa necessità di definire in maniera forte, quasi scolpendolo nella pietra, cosa sia bene e cosa sia male. Mentre, purtroppo per noi, la risposta spessissimo dipende dal contesto. Dipende, un po’ come 42, è la risposta a tante domande.

Accoppiamento, o “coupling” come dicono gli anglosassoni

L’accoppiamento in se non è ne bene ne male. L’accoppiamento andrebbe visto semplicemente come una misura, ed NDepend ad esempio è molto bravo a fare questa misurazione, che ci da un’informazione molto importante che deve però essere calata nel contesto.

Immaginiamo di avere una nostra libreria di log, esposta tramite un’ipotetica interfaccia “ILogger”, probabilmente vogliamo il massimo accoppiamento possibile tra il nostro codice e “ILogger” perché un basso accoppiamento potrebbe significare che non stiamo loggando un bel nulla.

In maniera simile se abbiamo un’interfaccia “IShoppingCart” che gestisce il carrello di un sistema di e-commerce vogliamo porre molta attenzione a chi la usa perché un uso indiscriminato, con un possibile conseguente forte accoppiamento, può solo portare a conseguenze poco positive in termini di manutenibilità ed evoluzione.

È quini molto importante capire chi è accoppiato con che cosa e anche la “direzione”, afferente o efferente, dell’accoppiamento stesso. Solo un’attenta analisi ci può dire se stiamo sbagliando qualcosa e in che misura.