Оскільки ви не професійний програміст, я б рекомендував дотримуватися простоти. Програмісту буде ЛОГО простіше взяти ваш модульований процедурний код і зробити його OO пізніше, ніж їм буде виправити погано написану програму OO. Якщо ви не досвідчені, можна створити програми OO, які можуть перетворитися на нечесний безлад, який не допоможе ні вам, ні тому, хто йде за вами.
Я думаю, що ваш перший інстинкт - код "ця річ - та річ" у першому прикладі - це вірний шлях. Ясно і очевидно, що ви хочете зробити. Не надто турбуйтеся про ефективність коду, чіткість набагато важливіша.
Якщо сегмент коду занадто довгий, розбийте його на шматки розміру куса, кожен з яких має свою функцію. Якщо він занадто короткий, подумайте про використання менших модулів та введення більшої кількості у відповідність.
---- Постскрипт: Пастки дизайну ОО
Успішно працювати з програмуванням OO може бути складним. Навіть є деякі люди, які вважають всю модель хибною. Є дуже хороша книга, яку я використав, коли вперше вивчав програмування OO під назвою Thinking in Java (зараз у 4-му випуску). У цього ж автора є відповідна книга для C ++. Насправді є ще одне питання щодо програмістів, які мають загальні підводні камені в об'єктно-орієнтованому програмуванні .
Деякі підводні камені є складними, але існує безліч способів створити проблеми дуже елементарними способами. Наприклад, пару років тому в моїй компанії був стажист, який написав першу версію програмного забезпечення, яке я успадкував, і він створив інтерфейси для всього, що можеколи-небудь мати кілька реалізацій. Звичайно, у 98% випадків колись була лише одна реалізація, тому код був завантажений невикористаними інтерфейсами, що робило налагодження дуже дратівливим, тому що ви не можете відступити через інтерфейсний дзвінок, і в кінцевому підсумку вам доведеться зробити пошук тексту для реалізації (хоча зараз я використовую IntelliJ був функцією "Показати всі втілення", але ще в той день у мене цього не було). Правило тут те саме, що і для процедурного програмування: завжди жорсткий код одне. Тільки коли у вас є дві або більше речей, створіть абстракцію.
Подібні помилки в дизайні можна знайти в Java Swing API. Вони використовують модель публікації-підписки для системи меню Swing. Це робить створення та налагодження меню в Swing повним кошмаром. Іронія полягає в тому, що вона абсолютно безглузда. Практично ніколи не буває ситуації, коли кілька функцій потребували б "підписатися" на натискання меню. Крім того, публікація-підписка була повною помилкою, оскільки система меню зазвичай завжди використовується. Це не так, як функції підписуються, а потім скасовуються підписки випадковим чином. Той факт, що "професійні" розробники в Sun зробили подібну помилку, просто показує, як легко навіть професіоналам зробити монументальні гвинти в OO-дизайні.
Я дуже досвідчений розробник з десятилітнім досвідом програмування OO, але навіть я першим визнаю, що є тонни, яких я не знаю, і навіть зараз дуже обережно використовую багато OO. Раніше я слухав довгі лекції від колеги, яка була завзятою організацією, щодо того, як робити конкретні конструкції. Він справді знав, чим він займається, але, чесно кажучи, мені було важко зрозуміти його програми, оскільки вони мали такі складні дизайнерські моделі.