đŹ EpisĂłdio 1: O Acoplamento Ă© discreto: ele jĂĄ estĂĄ no seu cĂłdigo e vocĂȘ provavelmente nem notou.
NĂŁo importa a linguagem de programação que vocĂȘ use para construir um sistema funcional â seu cĂłdigo estarĂĄ repleto de dependĂȘncias externas. Tanto Ă© que surgiram diversos gerenciadores de dependĂȘncia â como o BOSS no Delphi, o npm no JavaScript, o pip no Python, o Cargo no Rust, o Go modules no Go, e muitos outros. Todos eles existem por um motivo simples: vocĂȘ estĂĄ sempre dependendo de cĂłdigo que nĂŁo escreveu.
Antes de seguir, vale um esclarecimento importante:
Aqui nesta sĂ©rie, usaremos dois termos genĂ©ricos para deixar tudo claro desde o inĂcio:
- Recurso externo: qualquer coisa que seu cĂłdigo usa, mas que vocĂȘ nĂŁo escreveu com as prĂłprias mĂŁos. Pode ser uma função de biblioteca, uma classe de framework, um mĂłdulo baixado ou algo gerado automaticamente.
- Recurso interno: qualquer coisa que vocĂȘ escreveu deliberadamente, com domĂnio sobre seu funcionamento â mesmo que, Ă s vezes, nem vocĂȘ entenda mais direito.
O ponto central Ă© simples:
Se o seu cĂłdigo depende de um recurso â seja ele interno ou externo â, ele estĂĄ acoplado.
E quanto mais vocĂȘ ignora isso, mais vocĂȘ transforma dependĂȘncia em armadilha.
Se o seu cĂłdigo depende de algum recurso para funcionar, estĂĄ acoplado.
E quanto mais invisĂvel for esse vĂnculo, mais perigoso ele pode se tornar.
Quando vocĂȘ encontra um recurso que facilita sua vida, vocĂȘ simplesmente o acopla ao seu projeto, geralmente sem pensar duas vezes. A partir desse momento, seu cĂłdigo passa a depender dele. Isso Ă© acoplamento.
đ€ Agora pense: quando vocĂȘ estĂĄ escrevendo seu prĂłprio cĂłdigo â sem recorrer a recursos â vocĂȘ se preocupa com acoplamento? Chega a perder o sono tentando evitar ao mĂĄximo o acoplamento entre recursos criados por vocĂȘ? Se sim, poderia me dizer o motivo? Parece que as linguagens no geral nĂŁo se preocupam tanto assim com acoplamentos.
Ao iniciar um novo projeto, sem fazer uso de nenhum recurso â mesmo antes de vocĂȘ escrever a primeira linha de cĂłdigo... ele jĂĄ estĂĄ lĂĄ: o acoplamento, discreto, silencioso. E vocĂȘ provavelmente nem notou.
đ„ïž Exemplo prĂĄtico em Delphi
unit Unit1;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FMX.Types,
FMX.Controls,
FMX.Forms,
FMX.Graphics,
FMX.Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
end.
Percebeu? SĂł de criar um novo projeto, seu cĂłdigo jĂĄ estĂĄ acoplado a diversos recursos pela clĂĄusula uses
. E aqui vai um detalhe importante: no Delphi, ao declarar uma unit em uses
, todo o conteĂșdo pĂșblico daquela unit Ă© automaticamente incluĂdo na compilação. NĂŁo importa se vocĂȘ vai usar apenas uma funcionalidade desse recurso â o vĂnculo estĂĄ feito.
E mais: o compilador nĂŁo reclama se vocĂȘ nĂŁo usar nada dessas units. Esse acoplamento silencioso pode parecer inofensivo, mas ele injeta dependĂȘncias invisĂveis no seu projeto, tornando-o mais pesado e, potencialmente, mais frĂĄgil a mudanças externas. Linguagens como Go, por exemplo, nĂŁo permitem isso: se vocĂȘ importar um recurso e nĂŁo usĂĄ-lo, o compilador acusa o erro.
đ§š No Delphi, o silĂȘncio pode ser perigoso.
â ïž ConclusĂŁo
Acoplamento não é algo que surge apenas quando usamos recursos de terceiros. Ele estå presente desde o primeiro momento, embutido nas fundaçÔes do projeto, nos arquivos gerados automaticamente, nas unidades que o compilador exige e que muitas vezes nem questionamos.
A verdadeira pergunta nĂŁo Ă© âcomo evitar o acoplamento?â, mas sim:
âcomo lidar com o acoplamento de forma consciente e controlada?â
Ignorar o acoplamento sĂł nos deixa refĂ©ns dele. EntendĂȘ-lo, por outro lado, nos dĂĄ poder para projetar sistemas mais flexĂveis, sustentĂĄveis e menos frĂĄgeis com o tempo.
E talvez, mais importante que seguir qualquer mantra de âbaixo acoplamentoâ seja entender o que estĂĄ sendo acoplado, por que, e quais sĂŁo as consequĂȘncias disso. Porque no fim das contas, acoplar Ă© inevitĂĄvel â mas fazer isso com consciĂȘncia Ă© opcional.
đ Na prĂłxima parte da sĂ©rie, vamos mergulhar nos tipos de acoplamento: estrutural, funcional, temporal, e outros â explorando exemplos prĂĄticos e reflexĂ”es que vĂŁo alĂ©m dos livros didĂĄticos.
Porque entender acoplamento Ă© como enxergar a arquitetura invisĂvel do seu cĂłdigo.
E sĂł quem enxerga, consegue mudar.
TheCodeNaked
Onde o cĂłdigo Ă© exposto. SĂł nĂŁo vĂȘ quem nĂŁo quer.