Recherche…


Introduction

Qu'est ce que SOLID?

SOLID est un acronyme mnémonique (aide mémoire). Les principes de Solid devraient aider les développeurs de logiciels à éviter les «odeurs de code» et devraient déboucher sur un bon code source. Un bon code source signifie dans ce contexte que le code source est facile à étendre et à maintenir. Les principes de Solid sont centrés sur les classes

Quoi attendre:

Pourquoi devriez-vous appliquer SOLID

Comment appliquer les cinq principes SOLID (exemples)

SRP - Principe de responsabilité unique

Le S dans SOLID signifie principe de responsabilité unique (SRP).

La responsabilité signifie dans ce contexte des raisons de changer, de sorte que le principe stipule qu'une classe ne devrait avoir qu'une seule raison de changer.

Robert C. Martin l'a déclaré (lors de sa conférence à Yale shool of management en 10 septembre 2014) comme suit

Vous pourriez également dire, ne mettez pas les fonctions qui changent pour différentes raisons dans la même classe.

ou

Ne mélangez pas les préoccupations dans vos cours

Raison d'appliquer le SRP:

Lorsque vous modifiez une classe, vous pouvez affecter les fonctionnalités liées aux autres responsabilités de la classe. Garder les responsabilités à un faible niveau minimise le risque d'effets secondaires.

Mauvais exemple

Nous avons une interface IWallet et une classe Wallet qui implémente l'IWallet. Le porte-monnaie détient notre argent et la marque, en outre devrait-il imprimer notre argent en tant que représentation de chaîne. La classe est utilisée par

  1. un webservice
  2. un rédacteur qui imprime l'argent en euros dans un fichier texte.

Mauvais exemple

Le SRP est violé ici parce que nous avons deux préoccupations:

  1. Le stockage de l'argent et de la marque
  2. La représentation de l'argent.

C # exemple de code

public interface IWallet
{
    void setBrand(string brand);
    string getBrand();
    void setMoney(decimal money);
    decimal getMoney();
    string printMoney();
}

public class Wallet : IWallet
{
    private decimal m_Money;
    private string m_Brand;

    public string getBrand()
    {
        return m_Brand;
    }

    public decimal getMoney()
    {
        return m_Money;
    }

    public void setBrand(string brand)
    {
        m_Brand = brand;
    }

    public void setMoney(decimal money)
    {
        m_Money = money;
    }

    public string printMoney()
    {
        return m_Money.ToString();
    }
}

Bon exemple

Bon exemple

Pour éviter la violation du SRP, nous avons supprimé la méthode printMoney de la classe Wallet et l' printMoney placée dans une classe Printer. La classe Printer est maintenant responsable de l'impression et le portefeuille est maintenant responsable du stockage des valeurs.

C # exemple de code

public interface IPrinter
{
    void printMoney(decimal money);
}

public class EuroPrinter : IPrinter
{
    public void printMoney(decimal money)
    {
        //print euro
    }
}

public class DollarPrinter : IPrinter
{
    public void printMoney(decimal money)
    {
        //print Dollar
    }
}

public interface IWallet
{
    void setBrand(string brand);
    string getBrand();
    void setMoney(decimal money);
    decimal getMoney();
}

public class Wallet : IWallet
{
    private decimal m_Money;
    private string m_Brand;

    public string getBrand()
    {
        return m_Brand;
    }

    public decimal getMoney()
    {
        return m_Money;
    }

    public void setBrand(string brand)
    {
        m_Brand = brand;
    }

    public void setMoney(decimal money)
    {
        m_Money = money;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow