Quanta funzionalità è necessaria per creare una nuova classe?

1

In questo momento sto lavorando al mio piccolo progetto di un'applicazione di backup di file WPF. Sono giunto al punto in cui voglio creare un metodo che copi i file in modo ricorsivo da un posto all'altro.

Questa non è la prima volta che mi pongo la domanda:

Should this method be a part of an existing class, or should I store it in a new class?

Ciò che mi infastidisce di più è che se creo una nuova classe, molto probabilmente consisterà esclusivamente in questo metodo, quindi mi sembra una forzatura creare un nuovo tipo per una sola azione. D'altra parte, credo che sia una buona astrazione. La copia dei file non ha molto a che fare con una finestra WPF.

L'esempio che mostro qui fa emergere una domanda più generale. Come bilanciare funzionalità / astrazione / leggibilità per creare codice in cui i principi OOP non oscurano il buon senso? Sono relativamente nuovo alla programmazione, ma mi piacerebbe iniziare a seguire buone pratiche di codifica non appena possibile, ad es non implementare modelli di progettazione come pazzi, perché ho appena letto su di loro.

    
posta Kapol 15.05.2014 - 18:18
fonte

1 risposta

5

Il principio e lo scopo principali di OOP è di combinare i tuoi dati con la logica che lo manipola. Ergo, se il tuo nuovo metodo ha funzionalità che hanno specificamente a che fare con una classe, allora appartiene a quella classe.

Se la tua copia ricorsiva richiede di memorizzare qualsiasi stato in memoria, come una coda di byte o qualcosa del genere, quindi creare una classe RecursiveCopy e mettere lì il tuo metodo di copia. Se il metodo di copia ricorsivo è stateless, , rendilo un metodo statico e inseriscilo in una classe di utilità statica.

    
risposta data 15.05.2014 - 18:30
fonte

Leggi altre domande sui tag