Ponieważ nie jesteś profesjonalnym programistą, polecam trzymać się prostoty. Dużo łatwiej będzie programiście wziąć modułowy, proceduralny kod i sprawić, że będzie on OO później, niż naprawi źle napisany program OO. Jeśli nie masz doświadczenia, możesz stworzyć programy OO, które mogą przekształcić się w bezbożny bałagan, który ani ci nie pomoże, ani nikomu, kto przyjdzie po ciebie.
Myślę, że twój pierwszy instynkt, kod „ta rzecz-ta rzecz” w pierwszym przykładzie jest właściwą ścieżką. To, co chcesz zrobić, jest jasne i oczywiste. Nie przejmuj się zbytnio wydajnością kodu, przejrzystość jest o wiele ważniejsza.
Jeśli segment kodu jest zbyt długi, podziel go na kawałki wielkości kęsa, z których każdy ma swoją funkcję. Jeśli jest za krótki, rozważ użycie mniejszej liczby modułów i ustawienie większej liczby w szeregu.
---- Postscript: OO Design Traps
Skuteczna praca z programowaniem OO może być trudna. Są nawet ludzie, którzy uważają cały model za wadliwy. Jest bardzo dobra książka, której użyłem podczas pierwszej nauki programowania OO, o nazwie Myślenie w Javie (obecnie w czwartym wydaniu). Ten sam autor ma odpowiednią książkę dla C ++. W rzeczywistości programiści mają inne pytanie dotyczące typowych problemów w programowaniu obiektowym .
Niektóre pułapki są wyrafinowane, ale istnieje wiele sposobów na stworzenie problemów w bardzo prosty sposób. Na przykład kilka lat temu w mojej firmie był stażysta, który napisał pierwszą wersję odziedziczonego przeze mnie oprogramowania i stworzył interfejsy do wszystkiego, co mogłobypewnego dnia mają wiele implementacji. Oczywiście w 98% przypadków była tylko jedna implementacja, więc kod został załadowany nieużywanymi interfejsami, co sprawiło, że debugowanie było bardzo irytujące, ponieważ nie można cofnąć się przez wywołanie interfejsu, więc trzeba zrobić wyszukiwanie tekstowe dla implementacji (chociaż teraz używam IntelliJ był wyposażony w funkcję „Pokaż wszystkie implementacje”, ale w tamtych czasach tego nie miałem). Zasada jest taka sama, jak w przypadku programowania proceduralnego: zawsze koduj jedną rzecz. Tylko wtedy, gdy masz dwie lub więcej rzeczy, utwórz abstrakcję.
Podobny rodzaj błędów projektowych można znaleźć w interfejsie API Java Swing. Używają modelu publikuj-subskrybuj dla systemu menu Swing. To sprawia, że tworzenie i debugowanie menu w Swing to kompletny koszmar. Ironia polega na tym, że jest to całkowicie bezcelowe. Praktycznie nigdy nie ma sytuacji, w której wiele funkcji musiałoby „subskrybować” kliknięcie menu. Również publikacja-subskrypcja była całkowitym brakiem ognia, ponieważ system menu jest zwykle w użyciu. To nie jest tak, że funkcje subskrybują, a następnie wypisują się losowo. Fakt, że „profesjonalni” programiści w firmie Sun popełnili taki błąd, pokazuje, jak łatwo nawet profesjonalistom zrobić monumentalne błędy w projekcie OO.
Jestem bardzo doświadczonym programistą z wieloletnim doświadczeniem w programowaniu OO, ale nawet jako pierwszy przyznałbym, że jest mnóstwo tonów, których nie znam, a nawet teraz jestem bardzo ostrożny w używaniu wielu OO. Słuchałem długich wykładów współpracownika, który był gorliwym fanem OO, na temat tego, jak robić konkretne projekty. Naprawdę wiedział, co robi, ale szczerze mówiąc, miałem trudności ze zrozumieniem jego programów, ponieważ miały one tak wyrafinowane modele projektowe.