Principio aperto / chiuso e riapertura delle classi di Ruby

7

In OOP c'è il principio Open / Closed che afferma che

"software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification".

Considerando che in Ruby è possibile riaprire una classe, non credi che ciò infrange il principio di Open / Closed?

Quando pensi che dovremmo favorire la riapertura delle classi invece di estenderle semplicemente?

Quali pensi che siano le insidie nella riapertura delle classi?

    
posta Tudor Constantin 10.05.2011 - 07:48
fonte

1 risposta

6

Le classi aperte di Ruby forniscono un modo per creare in modo programmato classi complesse. Per le librerie complicate questo semplifica la configurazione e rende il codice più piccolo e più gestibile. Se mai incontrerai un programmatore Lisp, ti parleranno di quanto sia meraviglioso usare il codice per scrivere il codice.

Questo potere può essere usato sia per il bene che per il male. La pratica della funzionalità Monkey Patching in una classe è opportuna, ma è anche una forma di debito tecnico che renderà più difficile rimanere aggiornati e mantenere il codice.

Una buona regola empirica è che una classe dovrebbe essere riaperta solo dalla persona (gruppo) che l'ha originariamente scritta. Se gli altri si sentono, allora hanno bisogno di riaprire una delle tue classi, questo è probabilmente un segno che deve essere refactored quindi è più configurabile, che è aperto per l'estensione. Questo è il D di SOLID .

    
risposta data 10.05.2011 - 08:32
fonte

Leggi altre domande sui tag