2010-09-07 17 views
5

Sto sviluppando un progetto in C++. Mi sono reso conto che il mio programma non è OO.Programmazione orientata agli oggetti

Ho un main.cpp e diverse intestazioni per scopi diversi. Ogni intestazione è fondamentalmente una raccolta di funzioni correlate con alcune variabili globali per conservare i dati. Ho anche un windowing.h per la gestione di Windows. Questo contiene winMain() e winProc(). Chiama le funzioni che risiedono nel mio main.cpp quando accadono eventi (come fare clic su un pulsante) o quando ha bisogno di informazioni (come 'quanto è grande per fare questa finestra?'). Queste funzioni sono dichiarate in un file .h separato incluso in windowing.h.

Vale la pena di cambiare questo per essere OO? Vale la pena il lavoro. C'è un modo migliore in cui posso costruire il programma senza troppe modifiche?

Tutti i feedback sono i benvenuti, grazie per aver dedicato del tempo a leggere questo.

risposta

6

No, penso che se non è rotto, non aggiustarlo.

Qualsiasi sistema di finestre è intrinsecamente OO di grado. Hai un handle per una finestra gestita dal sistema operativo ed è possibile eseguire determinate operazioni su di esso. Se si utilizza window->resize() o resize(window) non è rilevante. Non c'è chiaramente alcun valore in questo riarrangiamento sintattico.

Tuttavia, con l'aumentare dell'applicazione, è probabile che molte finestre siano per lo più simili e sottilmente diverse. La migliore implementazione è la funzionalità di base di boilerplate con funzioni speciali allegate. E il modo per farlo è con una classe base e un polimorfismo.

Quindi, se si può rifattorizzare il programma per essere più elegante con OO, provaci. Se cresce nel paradigma OO con l'evoluzione naturale, segui le migliori pratiche e lascia che sia così. Ma non cercare solo di essere conformi al buzzword.

1

Dipende da ciò che si desidera raggiungere con il progetto. Se non utilizzi le funzionalità OO di C++ funziona per te e non ci sono buoni motivi per cambiare, quindi continua ad andare come stai andando. Se, invece, vorresti saperne di più su OOP e hai il tempo di applicarti, rielaborarlo in modo più OO ti offrirà un'ottima opportunità di apprendimento.

1

Vorrei seguire le migliori pratiche per lavorare con qualsiasi gestore di finestre che si sta utilizzando. La maggior parte usa uno stile OO, che erediterai automaticamente (!) Mentre segui i suoi schemi di utilizzo.

2

Due cose a cui devi pensare: analisi costi/benefici e costo opportunità.

Qual è il costo di cambiare il codice in OO? Qual è il vantaggio? Se quest'ultimo supera il primo, allora tenderei a cambiarlo.

I costi comprendono i costi tradizionali come il tempo trascorso, i soldi spesi e così via. I vantaggi includono un'implementazione più pulita, che porta a una manutenzione più semplice in futuro. Qualsiasi altro costo e beneficio ci sono in realtà dipende dalla tua situazione.

Ma una cosa spesso trascurata è il costo opportunità. Questo è un costo che deve essere preso in considerazione per l'analisi. È un termine economico che significa opportunità scontate.

In altre parole, se si converte il codice, il costo include l'impossibilità di fare qualcos'altro in quel momento.

Esempio classico.Se esegui la conversione e un cliente decide di non acquistare il tuo software perché non stai aggiungendo la funzione che desidera, le opportunità di vendita perse sono un costo.

+0

Punto interessante. Il mio codice sembrerebbe più bello cambiandolo in OO, ma non otterrei molte funzionalità. –

+1

La funzionalità non è tutto e la bellezza del codice è irrilevante. La manutenibilità del codice è rilevante e il codice potrebbe essere più gestibile, ma non sempre è un dato di fatto. – paxdiablo

Problemi correlati