Ich schreibe ein kleines MATLAB-Paket, das bestimmte numerische Klassenprobleme löst. Es gibt 3 Stufen des Algorithmus und der Benutzer hat 5 Möglichkeiten für jede Stufe. Ich habe das gesamte Problem mit Funktionen und 3 Schalterfällen implementiert (einer für jede Algorithmusstufe). Es funktioniert gut, aber ich denke darüber nach, mehr Dinge zu tun (mehr als 5 Auswahlmöglichkeiten und eine weitere Stufe) und auch einen Python-Port zu erstellen (einige Leute sind interessiert).
Ich habe mich gefragt, ob ich zu einem OOP-Framework konvertieren soll (in dem ich überhaupt nicht gut bin) oder ob ich mich an das prozedurale Framework halten soll, das ich habe (in dem ich gut bin). Ich habe in meinem prozeduralen Code sichergestellt, dass keine Funktion zwei Dinge tut und es nur eine minimale Überlappung gibt (2 Codesegmente machen fast nie dasselbe).
Bitte migrieren Sie dies zu SO, wenn Sie der Meinung sind, dass es in ihrer Domäne besser passt.
Diese Frage passt möglicherweise gut zum Stapelüberlauf. Ich denke, es passt auch gut hierher, weil es ein häufiges Problem in der Computerwissenschaft ist.
Ein gutes Beispiel für das Erstellen von Algorithmen ist PETSc, wenn Sie C-Code lesen können. Der objektorientierte Programmierstil kann bei der Kapselung von Daten hilfreich sein. Als einfachen ersten Schritt möchten Sie jedoch möglicherweise jede Auswahl für eine Stufe zu einer Funktion mit einer gemeinsamen Schnittstelle machen. Übergeben Sie dann für Ihren Algorithmus eine Funktion für jede Stufe als Eingabe und lassen Sie den Hauptalgorithmus die Funktion für jede Stufe aufrufen.
quelle
1
+
1.plus(1)
plus(1,1)
1
plus
__plus__
__rplus__
Denken Sie also nicht, dass Sie den quadratischen Stift in das runde Loch zwingen müssen. Wenn Ihr Algorithmus auf einfache prozedurale Weise gut aussieht, behalten Sie ihn so bei. Wenn es in einem OO-System enthalten sein muss, können Sie Ihrem Nicht-OO-Code jederzeit eine OO-Schnittstelle hinzufügen. C ++ - Codierer tun dies jeden Tag (und werden sogar dafür bezahlt).
quelle