O que é SRP ? de onde vem este termo ?
Tags: solid, srp, python, clearcode
Published: 2021-05-08 13:10:18

Olá galera, estou de volta com mais um artigo, este vai ser sobre "Single responsibility principle", da onde este principio fundamental vem? Para entendemos do que se trata SRP teremos que voltar um pouco no tempo e saber o que é solid.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0bk7y7lsjoo53jycewyo.jpeg)

Como a própria imagem acima demostra, as siglas "solid" tem o seu significado como:

* S - Single Responsibility Principle
* O - Open-Closed Principle
* L - Liskov Sustitution
* I - Interface Segregation
* D - Dependency Inversion

<b>Solid</b> é nada mais, nada menos que os cinco princípios da programação orientada a objetos. Eles não só ajudam como também facilitam no desenvolvimento de software, assim sendo simples, e fácil de manter e entender do que se trata. Sabe a tradução de cada um deles?

<b>1. Single Responsibility Principle</b>, responsabilidade unica.
<b>2. Open-Closed Principle</b>, aberto e fechado.
<b>3. Liskov Sustitution</b>, substituição de Liskov.
<b>4. Interface Segregation</b>, segregação da interface.
<b>5. Dependency Inversion</b>, inversão da dependência.

Para mais informações detalhadas sobre o que cada um representa, indico este [artigo aqui.](https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530) 

O SRP, como disse acima, ele é o princípio de responsabilidade única. Quando ele diz responsabilidade única, quer dizer que uma classe ou uma função, apenas tem que ter uma responsabilidade, como assim?

Se você for criar um programa de calculadora, você terá que ter no mínimo as 4 funções básicas, somar, subtrair, multiplicar e dividir. Logo este principio diz que você tem que ter uma função para cada cálculo para assim cada um ter apenas uma responsabilidade e assim não afetar o processo do outro.

Por exemplo, em python: 

<b>Abstração incorreta</b>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wiwuamo3nrfy4u1dqm8.png)

<b>Abstração correta</b>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/one4nsger9ypfvcjc9oc.png)

Este exemplo demostra que cada função tem apenas uma responsabilidade de resolver o problema, nele utilizamos encapsulamento, e se você comparar um com o outro, vai perceber que tem bastante diferença entre eles. Este foi o <b>diário de bordo #04</b> vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

<p align="center">
  <a href="#">
    <img src="https://cdn.dribbble.com/users/1889486/screenshots/5081642/thankyou_.gif" width="500">
  </a>
</p>

<b>Este artigo foi útil para você?</b> 
<b>Deixe um comentário abaixo.</b>

## Referências 

* [Código limpo: Oreilly](https://www.oreilly.com/library/view/clean-code-in/9781788835831/2ae22d34-6460-426b-ba8c-5dac49eb829f.xhtml#:~:text=The%20single%20responsibility%20principle%20SRP,must%20have%20only%20one%20responsibility.&text=If%20we%20have%20to%20make,class%20has%20too%20many%20responsibilities.)
* [O que é SOLID: O guia completo para você entender os 5 princípios da POO](https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530)