[Conceito] - Inversão de Controle

zanfranceschi

Francisco Zanfranceschi

Posted on April 2, 2022

[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.

💖 💪 🙅 🚩
zanfranceschi
Francisco Zanfranceschi

Posted on April 2, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

What was your win this week?
weeklyretro What was your win this week?

November 29, 2024

Where GitOps Meets ClickOps
devops Where GitOps Meets ClickOps

November 29, 2024

How to Use KitOps with MLflow
beginners How to Use KitOps with MLflow

November 29, 2024

Modern C++ for LeetCode 🧑‍💻🚀
leetcode Modern C++ for LeetCode 🧑‍💻🚀

November 29, 2024