J'écris un petit paquet MATLAB qui résoudra certains problèmes numériques de classe. Il y a 3 étapes de l'algorithme et l'utilisateur a 5 choix pour chaque étape. Je mis en œuvre en utilisant l'ensemble du problème fonctions et 3 cas de commutation (un pour chaque étage de l' algorithme). Cela fonctionne bien mais j'envisage de lui faire faire plus de choses (plus de 5 choix et une étape de plus) et aussi de faire un port Python (certaines personnes sont intéressées).
Je me demandais si je devrais me convertir à un cadre OOP (auquel je ne suis pas bon du tout) ou si je devrais m'en tenir au cadre procédural que j'ai (dans lequel je suis bon). Je me suis assuré dans mon code procédural qu'aucune fonction ne fait deux choses et qu'il y a un chevauchement minimal (2 segments de code ne font presque jamais la même chose).
Veuillez migrer vers SO si vous pensez que cela convient mieux à leur domaine.
Cette question pourrait convenir à Stack Overflow. Je pense que c'est aussi un bon choix ici parce que c'est un problème courant en science informatique.
En termes de composition d'algorithmes, un bon exemple d'une bibliothèque qui fait bien cela est PETSc, si vous pouvez lire le code C. Le style de programmation orienté objet peut aider à encapsuler des données, mais comme une première étape simple, vous pouvez simplement faire de chaque choix pour une étape une fonction avec une interface commune. Ensuite, pour votre algorithme, passez une fonction pour chaque étape en entrée et demandez à l'algorithme principal d'appeler la fonction pour chaque étape.
la source
1
+
1.plus(1)
plus(1,1)
1
plus
__plus__
__rplus__
Donc, ne pensez pas que vous devez forcer la cheville carrée dans le trou rond, si votre algorithme semble bon de manière procédurale, alors gardez-le comme ça. S'il doit être inclus dans un système OO, vous pouvez toujours mettre une interface OO sur votre code non OO. Les codeurs C ++ le font tous les jours (et sont même payés pour cela).
la source