Estoy escribiendo un pequeño paquete MATLAB que resolverá ciertos problemas numéricos de clase. Hay 3 etapas del algoritmo y el usuario tiene 5 opciones para cada etapa. He implementado todo el problema usando funciones y 3 casos de cambio (uno para cada etapa de algoritmo). Funciona bien, pero estoy considerando hacer que haga más cosas (más de 5 opciones y una etapa más) y también hacer un puerto de Python (algunas personas están interesadas).
Me preguntaba si debería convertirme a un marco de OOP (en lo que no soy bueno en absoluto) o si debería seguir con el marco de procedimiento que tengo (en lo que soy bueno). Me he asegurado en mi código de procedimiento de que ninguna función hace dos cosas y hay una superposición mínima (2 segmentos de código casi nunca hacen lo mismo).
Migre esto a SO si cree que es más adecuado en su dominio.
Esta pregunta podría ser una buena opción para Stack Overflow. Creo que también encaja bien aquí porque es un problema común en la ciencia computacional.
En términos de algoritmos de composición, un buen ejemplo de una biblioteca que hace esto bien es PETSc, si puede leer el código C. El estilo de programación orientado a objetos puede ayudar a encapsular datos, pero como un simple primer paso, es posible que desee que cada opción para una etapa sea una función con una interfaz común. Luego, para su algoritmo, pase una función para cada etapa como entrada y haga que el algoritmo principal llame a la función para cada etapa.
fuente
1
+
1.plus(1)
plus(1,1)
1
plus
__plus__
__rplus__
Por lo tanto, no sienta que necesita forzar la clavija cuadrada en el orificio redondo, si su algoritmo se ve bien en un procedimiento simple, manténgalo así. Si necesita ser incluido en un sistema OO, siempre puede poner una interfaz OO en su código no OO. Los codificadores de C ++ hacen esto todos los días (e incluso se les paga por ello).
fuente