Princípio da Responsabilidade Única - Princípios S.O.L.I.D.


O que são os princípios S.O.L.I.D.?



個体.これらは、ソフトウェアの設計の 5 つの原則であり、目的のプログラムである. Eles foram introduzidos によって Robert C. Martin em um artigo . Estes princípios ajudam a escrever um código melhor nos quesitos de entendimento, manutenção e melhor reproveitamento.


エッセ・アクロニモ・シニフィカ:

  • 単一責任の原則 (Princípio da Responsabilidade Única)

  • オープン/クローズの原則 (Princípio do Aberto/Fechado)

  • Liskov Substitution Principle (Princípio da Substituição de Liskov)

  • インターフェイス分離の原則 (Princípio da Segregação de Interfaces)

  • 依存性逆転の原則 (Princípio da Inversão de Dependências)

  • 単一の責任の原則. C# の言語を使用して、サンプルを作成できます.


    単一責任原則(SRP)



    Uma classe deve ter um e somente um motivo para mudar, ou seja, ela deve ser responsável por apenas uma parte específica de um sistema.



    Isso significa que cada classe deve ser especializada, podendo fazer apenas um trabalho e não vários. Assim, focando na sua atividade principal.

    Quando uma classe tem muitas responsabilidades, exite mais chance dela precisar de ser modificada e também de possuir mais bugs.

    Exemplo prático



    任天堂のマリオにインスピレーションを与えてくれた例です. Abaixo temos a classe Cogumelo, ela representa os itens de cogumelo que dão um benefício ao entrar em contato com o jogador.

    Esta classe contém três métodos: darBeneficio() , sumir() e somBeneficio() . Dessa forma, ela é responsável por dar o benefício ao Mario, e ao entrar em contato com o personagem o item desaparece e reproduz o som de feedback. Porém, função principal do item é de dar uma vantagem a quem o obtém.

    using UnityEngine;
    using System.Collections;
    
    public class Cogumelo : MonoBehaviour
    {
        public int id;
        public string cor;
    
        public void darBeneficio(){
            //lógica para atribuir o beneficio ao Mário
        }
        public void sumir(){
            //lógica para desaparecer o cogumelo
        }
        public void somBeneficio(){
            //lógica para reproduzir o som beneficio na tela
        }
    }
    


    Nessa abordagem, a classe Cogumelo tem mais de uma ação e responsabilidade.フィードバックを変更する必要はありません. Consequentemente um erro em somBeneficio() , iria impactar os outros métodos da classe. Assim nesse acoplamento há maiores chance de produzir um bug.

    Além disso, ao reutilizar os métodos somBeneficio() e sumir() em outros itens faria com que instâncias de Cogumelo existam em outras classes. Assim, mais classes seriam de Cogumelo, o que gera um acoplamento maior no sistema e tornam mudanças mais difíceis. Outro fator é que essas outras classes teriam acesso ao método darBeneficio() , mesmo sem precisar dele.

    アプリカンドはプリンシピオ・ダ・レスポンサビリダーデ・ニカ、レスポンサビリダデス・ペロス・コンポータメントス・ク・サン・リアリザドスとしてのセパランド、オブテモス・ア・モディフィカソン・アバイショ.

    using UnityEngine;
    using System.Collections;
    
    public class Cogumelo : MonoBehaviour
    {
        public int id;
        public string cor;
    
        public void darBeneficio(){
            //lógica para dar beneficio
        }
    }
    
    public class Some : MonoBehaviour{
        public void sumir(){
            //lógica para desaparecer o cogumelo
        } 
    }
    
    public class ReprodutorSom : MonoBehaviour{
        public void somBeneficio(){
            //lógica para reproduzir o som beneficio na tela
        }     
    }
    
    


    Dessa forma acima, é possível reutilizar as classes em outros objetos do jogo, como as moedas, blocos e outros itens diferentes.これらの変更は、すべてのクラスのフィカム メイス コエサス、テンド アペナス ウマ レスポンサビリダーデ、オ ケ ファシリタ ア マヌテンサオ ド コディゴ エヴィタ マイス バグ ノー フトゥーロとして行われます.

    Um dos possíveis problemas que podem acontecer aon não usar o SRP, é o alto acoplamento entre classes, dificuldade de reproveitamento de código e a falta de coesão. Estes três fatores atrapalham a realização de futuras modificações, deixando as classes as muitodependentes entre si e dificultando o seu entendimento.

    ロゴ、単一責任の原則 ajuda na manutenção de um projeto e na legalidade dele.プリンシピオスとプロジェトのパドロス、工場、ビルダー、コマンドのアウトロスの基本的なベースです.