Qualcosa che confonde il principio di singola responsabilità

2

1)

In fact if two responsibilities are always expected to change at the same time you arguably should not separate them into different classes as this would lead, to quote Martin, to a "smell of Needless Complexity". The same is the case for responsibilities that never change - the behavior is invariant, and there is no need to split it.

Presumo che anche se ci si aspetta che le responsabilità non correlate cambino per lo stesso motivo (o se non cambino mai), non dovremmo comunque inserirle nella stessa classe, poiché ciò violerebbe ancora il principio di alta coesione?

2) Ho trovato due definizioni abbastanza diverse per SRP:

Single Responsibility Principle says that a subsystem, module, class, or even a function, should not have more than one reason to change.

e

There should never be more than one reason for a class to change

La seconda definizione non stringe SRP a un livello di classe? In tal caso, la prima citazione non è errata sostenendo che SRP può anche essere applicato a livello di sottosistema, modulo e funzione?

grazie

    
posta user1483278 04.07.2012 - 20:48
fonte

1 risposta

2

Immagino che sia solo questione di come siano generali queste responsabilità. Ad esempio, potresti avere una libreria / assembly chiamato DataAccessLayer, la cui unica responsabilità è il recupero dei dati dalla persistenza. All'interno di questo, potresti avere una classe di commessa, la cui unica responsabilità è quella di attirare i clienti dalla persistenza.

Immagino che si possa fare un argomento altamente semantico sul fatto che questa natura compositiva significhi che l'assemblaggio ha tante responsabilità come DAO, ma penso che sia davvero più un nocciolo di un ragionevole argomento contro il concetto che viene trasmesso con SRP.

    
risposta data 04.07.2012 - 20:56
fonte

Leggi altre domande sui tag