Responsabilità singola vs programmazione procedurale [duplicato]

5

La responsabilità unica (da SOLID) è come farmi creare classi con un solo metodo pubblico. Ma se è così, sarebbe possibile usare metodi statici e tornare alla programmazione procedurale. Qual è la differenza?

    
posta SerG 19.12.2013 - 22:18
fonte

2 risposte

4

Single responsibility (from SOLID) is like making me create classes with only one public method.

Quindi stai sbagliando o hai bisogno di usare una lingua con buon supporto delegate / functor / funzione oggetto. Pochissime responsabilità possono essere rappresentate con una singola funzione pura.

In lingue come Java ciò può accadere perché è necessario utilizzare le interfacce per fornire implementazioni diverse a un'interfaccia a funzione singola, ma in generale ciò non dovrebbe accadere. Certamente puoi creare tutte le funzioni statiche che passano semplicemente i dati, e se è più facile, con tutti i mezzi fai programmazione procedurale o funzionale.

Ma per molti problemi, avere uno stato condiviso o alcuni invarianti protetti ti semplificano la vita, e OO funziona bene.

    
risposta data 19.12.2013 - 22:38
fonte
6

Il principio di responsabilità unica non ti obbliga ad avere classi con un solo metodo pubblico. Semplicemente afferma che una classe dovrebbe fare una cosa, e dovrebbe farlo bene.

Ad esempio, un GraphNode potrebbe contenere funzioni pubbliche per stampare una descrizione, rinominare il nodo o riorganizzarlo all'interno del suo quadro ... Tuttavia, tutto ciò che è relativo ai bordi sarà posizionato meglio nel suo GraphEdge classe, anche se potrebbe sembrare che "pochi metodi addizionali di bordo non dovrebbero disturbare nessuno".

Un altro buon indicatore per le classi che comunemente violano lo SRP sono le classi XYZHelpers o ABCManagers che spesso implementano una serie di metodi diversi che sono solo lontanamente correlati tra loro. Nella maggior parte dei casi, questi metodi dovrebbero essere riprogrammati e appartenere a una classe specifica, (o una nuova classe) a seconda dello scenario.

Tuttavia, credo che tutti i modelli, i principi e le migliori pratiche dovrebbero sempre essere presi con un pizzico di sale. Sebbene siano incredibilmente utili, applicarli alla cieca senza usare il buon senso potrebbe farti più male che bene.

    
risposta data 19.12.2013 - 22:58
fonte

Leggi altre domande sui tag