Separa le classi per ogni responsabilità? [chiuso]

-4

Mi piacerebbe sapere quali sono i vantaggi di mettere la logica in classi separate piuttosto che mettere tutta la logica nella classe RuleManager .

Ad esempio

Separa le classi per ogni responsabilità

class RuleManager {

    public function create(string $name)
    {
        return (new CreateRuleCommand($name));
    }


    public function list()
    {
        return new ListRulesCommand();
    }

}

vs

class RuleManager {

    public function create(string $name)
    {
        // Do all the create logic Here

        return $something
    }


    public function list()
    {
        // Add all the listing Logic Here

        return $something
    }

}
    
posta I'll-Be-Back 18.05.2017 - 22:33
fonte

1 risposta

2

Dipende interamente da ciò che è la "creare logica". Dopotutto, questi potrebbero rappresentare esattamente lo stesso codice.

Il tuo esempio di codice non regge, separare le preoccupazioni consente a una singola responsabilità di vivere in un solo posto. Il vantaggio che si ottiene è il cambiamento localizzato. Boss vuole ListRulesCommand per consentire l'ordinamento personalizzato, è davvero bello se non si finisce per dover cambiare i metodi di 5 list() in 5 classi diverse.

Ma tu dici che non hai 5 classi, solo l'1? In tal caso, le tue lezioni hanno maledettamente reso il codice più facile da leggere. Altrimenti il vantaggio non è per niente. L'unica cosa che hai fatto è stata quella di ridurre le probabilità che alcuni utenti copiassero la tua classe e duplicassero il tuo codice senza rifare la duplicazione. Puoi impazzire se stessi cercando di difenderti.

    
risposta data 19.05.2017 - 02:02
fonte

Leggi altre domande sui tag