[Conceito] - Inversão de Controle
Francisco Zanfranceschi
Posted on April 2, 2022
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.
Posted on April 2, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.