Привет. Давайте-ка сейчас немного поговорим за процедурный подход в программировании. Думаю, вы как минимум изучали данную методику в институте или как максимум сами используете подобный стиль кодирования.
Поделюсь свои мнением и опытом на это счет. Вдруг, кому-то покажется полезным и интересным. А кому-то вообще, может откроет глаза.
Большинство корпоративных приложений содержат «вспомогательные классы», также известные как «существительные (noun) агенты» - существительное, обозначающее того, кто выполняет действие.
Обычно такие классы оканчиваются на -er или -or. Таковы правила написания английских слов, что и вошло в привычку так писать название классов. Что в принципе и верно грамматически, ну и сразу дает понять при беглом просмотре кода "что за что отвечает".
Наличие слишком большого количества существительных агентов указывает на то, что разработчики думают процедурами, а не объектами.
Пример 1.
Чтобы читать значения CSV из файла, процедурный программист должен создать имя агента CsvParser с помощью метода parse.
Объектно ориентированный программист создаст класс под названием CsvFile с конструктором, который принимает File и метод content().
Видите разницу между подходами?
Пример 2.
Чтобы отформатировать Money, процедурный программист должен создать агент существительное MoneyFormatter с форматом метода (Money).
ОО-программист создал бы класс FormattedMoney с конструктором, принимающим Money, и методом toString().
Помните: процедурное мышление приводит к появлению множества бесполезных существительных в системе. ООП удаляет эти некрасивые агенты и оставляет только те классы, которые имеют значение в нашей системе.
Даже не знаю, почему так часто встречается именно процедурный подход. Но, думаю, это только потому что при обучении упор делался на понимание принципа программы, в том смысле что она должна работать "здесь и сейчас". А в мире высоких технологий, нужно чтобы программа работала всегда. Надеюсь вы уловили мою метафору.
Если нет, то перечитайте статью еще раз.