Da Sie kein professioneller Programmierer sind, würde ich empfehlen, sich an die Einfachheit zu halten. Es wird für Programmierer VIEL einfacher sein, Ihren modularisierten prozeduralen Code zu verwenden und ihn später zu OO zu machen, als für sie, ein schlecht geschriebenes OO-Programm zu reparieren. Wenn Sie keine Erfahrung haben, können Sie OO-Programme erstellen, die sich in ein unheiliges Chaos verwandeln können, das weder Ihnen noch denjenigen hilft, die nach Ihnen kommen.
Ich denke, Ihr erster Instinkt, der "this thing-that thing" -Code im ersten Beispiel, ist der richtige Weg. Es ist klar und offensichtlich, was Sie tun möchten. Sorgen Sie sich nicht zu sehr um die Codeeffizienz, Klarheit ist viel wichtiger.
Wenn ein Codesegment zu lang ist, teilen Sie es in mundgerechte Abschnitte auf, von denen jeder seine eigene Funktion hat. Wenn es zu kurz ist, sollten Sie weniger Module verwenden und mehr in eine Linie bringen.
---- Nachtrag: OO Design Traps
Erfolgreich mit OO-Programmierung zu arbeiten kann schwierig sein. Es gibt sogar einige Leute , die das ganze Modell für fehlerhaft halten. Es gibt ein sehr gutes Buch, das ich beim ersten Erlernen der OO-Programmierung verwendet habe: Thinking in Java (jetzt in der 4. Ausgabe). Der gleiche Autor hat ein entsprechendes Buch für C ++. Es gibt tatsächlich eine andere Frage zu Programmierern, die sich mit häufigen Fallstricken in der objektorientierten Programmierung befasst .
Einige Fallstricke sind raffiniert, aber es gibt viele Möglichkeiten, Probleme auf sehr grundlegende Weise zu verursachen. Zum Beispiel gab es vor ein paar Jahren einen Praktikanten in meiner Firma, der die erste Version einer von mir geerbten Software schrieb und Schnittstellen für alles erstellte, was möglich warEines Tages haben mehrere Implementierungen. Natürlich gab es in 98% der Fälle nur eine einzige Implementierung, daher wurde der Code mit nicht verwendeten Schnittstellen geladen, was das Debuggen sehr ärgerlich machte, da Sie nicht über einen Schnittstellenaufruf zurücktreten können, sodass Sie am Ende eine ausführen müssen Textsuche für die Implementierung (obwohl ich jetzt IntelliJ verwende, hat es die Funktion "Alle Implementierungen anzeigen", aber damals hatte ich das nicht). Die Regel hier ist die gleiche wie bei der prozeduralen Programmierung: Immer eine Sache fest codieren. Erstellen Sie nur dann eine Abstraktion, wenn Sie zwei oder mehr Dinge haben.
Eine ähnliche Art von Designfehlern findet sich in der Java Swing API. Sie verwenden ein Publish-Subscribe-Modell für das Swing-Menüsystem. Dies macht das Erstellen und Debuggen von Menüs in Swing zu einem Albtraum. Die Ironie ist, dass es völlig sinnlos ist. Es gibt praktisch nie eine Situation, in der mehrere Funktionen einen Menüklick "abonnieren" müssten. Außerdem war Publish-Subscribe dort eine völlige Fehlzündung, da normalerweise immer ein Menüsystem verwendet wird. Es ist nicht so, dass Funktionen zufällig abonniert und dann abbestellt werden. Die Tatsache, dass "professionelle" Entwickler bei Sun einen solchen Fehler gemacht haben, zeigt nur, wie einfach es selbst für Profis ist, monumentale Fehler im OO-Design zu machen.
Ich bin ein sehr erfahrener Entwickler mit jahrzehntelanger Erfahrung in der OO-Programmierung, aber selbst ich würde als erster zugeben, dass es Tonnen gibt, die ich nicht kenne, und selbst jetzt bin ich sehr vorsichtig, wenn ich viel OO verwende. Ich habe lange Vorträge von einem Kollegen gehört, der ein OO-Fanatiker war, wie man bestimmte Designs macht. Er wusste wirklich, was er tat, aber ehrlich gesagt fiel es mir schwer, seine Programme zu verstehen, weil sie so ausgefeilte Designmodelle hatten.