Поскольку вы не профессиональный программист, я бы рекомендовал придерживаться простоты. Программисту будет гораздо проще взять ваш модульный процедурный код и сделать его OO позже, чем он сможет исправить плохо написанную OO-программу. Если у вас нет опыта, можно создать ОО-программы, которые могут превратиться в нечестивый беспорядок, который не поможет ни вам, ни тем, кто придет за вами.
Я думаю, что ваш первый инстинкт, код "эта вещь-вещь" в первом примере - верный путь. Это ясно и очевидно, что вы хотите сделать. Не беспокойтесь об эффективности кода, ясность гораздо важнее.
Если сегмент кода слишком длинный, разбейте его на куски размером с кусочек, каждый из которых имеет свою функцию. Если он слишком короткий, подумайте об использовании меньшего количества модулей и размещении большего в строке.
---- Постскриптум: OO Design Traps
Успешно работать с ОО-программированием может быть сложно. Есть даже некоторые люди, которые считают всю модель некорректной. Есть одна очень хорошая книга, которую я использовал, когда впервые изучал ОО-программирование, под названием Thinking in Java (сейчас в 4-м выпуске). Этот же автор имеет соответствующую книгу для C ++. На самом деле есть еще один вопрос о программистах, которые имеют дело с распространенными ошибками в объектно-ориентированном программировании .
Некоторые подводные камни сложны, но есть множество способов создать проблемы в самых простых формах. Например, пару лет назад в моей компании был стажер, который написал первую версию программного обеспечения, которое я унаследовал, и создал интерфейсы для всего, что могло быкогда-нибудь есть несколько реализаций. Конечно, в 98% случаев когда-либо существовала только одна реализация, поэтому код был загружен неиспользуемыми интерфейсами, что делало отладку очень раздражающей, потому что вы не можете вернуться назад через интерфейсный вызов, поэтому вы в конечном итоге должны выполнить текстовый поиск для реализации (хотя сейчас я использую IntelliJ, у него была функция «Показать все реализации», но тогда у меня не было этого). Здесь правило такое же, как и для процедурного программирования: всегда жестко кодируйте одну вещь. Только когда у вас есть две или более вещи, создайте абстракцию.
Подобный тип ошибки проектирования можно найти в Java Swing API. Они используют модель публикации-подписки для системы меню Swing. Это делает создание и отладку меню в Swing полным кошмаром. Ирония в том, что это совершенно бессмысленно. Практически никогда не бывает ситуации, в которой нескольким функциям потребуется «подписаться» на нажатие меню. Кроме того, публикация-подписка была полным пропуском там, потому что система меню обычно всегда используется. Это не значит, что функции подписываются, а затем отписываются случайным образом. Тот факт, что «профессиональные» разработчики в Sun допустили такую ошибку, просто показывает, насколько легко даже профессионалам делать монументальные провалы в дизайне ОО.
Я очень опытный разработчик с многолетним опытом в ОО-программировании, но даже я бы первым признал, что есть тонны, которых я не знаю, и даже сейчас я очень осторожен в использовании ОО-программ. Я имел обыкновение слушать длинные лекции от сотрудника, который был фанатом OO о том, как сделать определенные проекты. Он действительно знал, что он делает, но, честно говоря, мне было трудно понять его программы, потому что у них были такие сложные модели дизайна.