2010-09-07 9 views
5

Estoy desarrollando un proyecto en C++. Me di cuenta de que mi programa no es OO.Programación orientada a objetos

Tengo un main.cpp y varios encabezados para diferentes propósitos. Cada encabezado es básicamente una colección de funciones relacionadas con algunas variables globales para retener datos. También tengo windowing.h para administrar ventanas. Esto contiene winMain() y winProc(). Llama a las funciones que residen en mi main.cpp cuando suceden los eventos (como hacer clic en un botón) o cuando necesita información (por ejemplo, "¿qué tan grande es esta ventana?"). Estas funciones se declaran en un archivo .h separado incluido en windowing.h.

¿Vale la pena cambiar esto para ser OO? Vale la pena el trabajo. ¿Hay alguna forma mejor de construir el programa sin demasiados cambios?

Todos los comentarios son bienvenidos, gracias por tomarse el tiempo para leer esto.

Respuesta

6

No, creo que si no está roto, no lo arregles.

Cualquier sistema de ventanas es inherentemente OO hasta cierto punto. Tiene un identificador en una ventana administrada por el sistema operativo y puede realizar ciertas operaciones en él. Si usa window->resize() o resize(window) es inmaterial. Claramente, no hay ningún valor en tal reordenamiento sintáctico.

Sin embargo, a medida que la aplicación crece, es probable que encuentre que muchas ventanas son en su mayoría similares y sutilmente diferentes. La mejor implementación es la funcionalidad básica estándar con funciones especiales adjuntas. Y la forma de hacerlo es con una clase base y polimorfismo.

Por lo tanto, si puede refactorizar el programa para que sea más elegante con OO, hágalo. Si crece hasta convertirse en el paradigma OO con evolución natural, siga las mejores prácticas y déjelo así. Pero no intentes cumplir con las palabras de moda.

1

Depende de lo que quiere lograr con el proyecto. Si no está usando las características de OO de C++ que funciona para usted y no hay buenas razones para cambiar, entonces continúe yendo por el camino que está tomando. Si, por otro lado, le gustaría aprender más sobre OOP y tiene tiempo para postularse, refactorizarlo para que sea más estilo OO le proporcionará una gran oportunidad de aprendizaje.

1

Seguiría las mejores prácticas para trabajar con cualquier administrador de ventanas que esté usando. La mayoría usa un estilo OO, que automáticamente heredará (!) Mientras sigue sus patrones de uso.

2

Dos cosas que debe tener en cuenta: análisis de costo/beneficio y costo de oportunidad.

¿Cuál es el costo de cambiar su código para que sea OO? ¿Cuál es el beneficio? Si el último pesa más que el anterior, entonces tenderé a cambiarlo.

Los costos incluyen los costos tradicionales, como el tiempo invertido, el dinero gastado, etc. Los beneficios incluyen una implementación más limpia, lo que permite un mantenimiento más fácil en el futuro. Cualquier otro costo y beneficio que exista dependerá realmente de su propia situación.

Pero una cosa que a menudo se pasa por alto es el costo de oportunidad. Este es un costo que debe tenerse en cuenta en su análisis. Es un término económico que significa oportunidades perdidas.

En otras palabras, si convierte su código, su costo incluye su incapacidad para hacer otra cosa con ese tiempo.

Ejemplo clásico.Si realiza la conversión y un cliente decide no comprar su software porque no está agregando la función que desea, esa oportunidad de venta perdida es un costo.

+0

Punto de interés. Mi código se vería más bonito cambiándolo a OO, pero no obtendría mucha funcionalidad. –

+1

La funcionalidad no es todo, y la belleza del código es irrelevante. La capacidad de mantenimiento del código es importante y el código bonito puede ser más fácil de mantener, pero eso no siempre es así. – paxdiablo

Cuestiones relacionadas