Conteúdo original nessa thread do Twitter
Devs, precisamos conversar sobre uma coisa que todos nós deveríamos estar fazendo para mais qualidade de vida:
INVERSÃO DE CONTROLE!
Você anda fazendo isso? Tá usando INJEÇÃO DE DEPENDÊNCIA também?
🧵👇
cc @sseraphini
Quando falamos de inversão de controle, estamos falando sobre responsabilidade, fluxo de controle, delegar para outro, etc. E essa parte me parece que é muitas vezes pouco ou mal explicada.
Vamos a um exemplo em que o controle poderia ser invertido para facilitar a vida de alguém. O controle aqui no caso é da Tech Recruiter que pede, um a um, os currículos dos candidatos pra depois analisá-los. Ela tem que saber o contato (whatsapp, email, etc.) de cada um.
Se ligou a treta que é conseguir os currículos da forma anterior?
E como a gente melhora isso? Bom, vamos deixar que a Tech Recruiter receba os CVs sem ter que ficar pedindo um a um. Vamos INVERTER OS PAPÉIS!!! OBA!!!
Fez sentido? Viu como a gente delegou pra outra "coisa" a obtenção dos currículos?
A abordagem foi via INJEÇÃO DE DEPENDÊNCIA (injetamos CVs via construtor).
É importante ressaltar que injeção de dependência é UM TIPO de inversão de controle.
Se usássemos o padrão Service Locator, por exemplo, para obter os currículos, também seria uma inversão de controle, mas não mais uma injeção de dependência.
Ficou claro que injeção de dependência é uma inversão de controle, mas o inverso pode não ser verdadeiro?
COISAS PARA ABAFAR NAS FESTAS
IoC significa Inversion of Control e é um princípio, não um padrão.
DI significa Dependency Injection.
Se puder não usar o padrão Service Locator, não use. Dizem que é um anti-pattern.
Preconceito é idiota.
Chegou até aqui, né? Pqp! Vamos inverter as coisas, vc me dá um abraço agora, vai! 🫂
Ah, essa thread foi inspirada pela pergunta do colega aqui.
Top comments (0)