DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on • Updated on

[Conceito] - Inversão de Controle

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

img


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.

img

img


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!!!

img

img


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?

img


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.

Discussion (0)