Классы и ООП: зачем, а главное — когда использовать, а когда нет?

Всем доброго времени суток. Надеюсь, хотя бы здесь мне дадут внятный ответ на мой вопрос.

Прочитав и просмотрев не один десяток различных статей и видео на YouTube о Python в частности об ООП, я так ни разу и не услышал ответа на вопрос, который как мне кажется достаточно важен:
зачем, а главное - когда следует использовать классы, а когда достаточно будет написать несколько простых функций.

Предположим. Я хочу написать бота для tg, который бы отправлял пользователю видео, скачанное с... ну, например, с КиноПоиск.
То есть, пользователь отправляет боту ссылку на фильм, а бот делает всё необходимое и в итоге присылает ему видос (трейлер) к этому фильму.

На мой взгляд, задача проста. Нужно написать несколько функций и бот готов.
Я понимаю, что все сейчас повернуты на этом ООП, и большинство программистов скажет, что ООП - это круто бла бла бла. Это всё ясно. Но, вопрос: зачем мне для такой задачи создавать ещё и классы?

Буду признателен, если кто-то объяснит мне всё это простыми словами.

п.с. если навёл плохой пример - предоставьте свой пример, и объясните, что да как.

Спасибо.
  • Вопрос задан
  • 468 просмотров
Пригласить эксперта
Ответы на вопрос 5
gbg
@gbg
Любые ответы на любые вопросы
Все эти классы, фабрики, абстракции и прочие умные слова нужны для того, чтобы программист мог управлять сложностью создаваемой им программы. Наше сознание хранит в среднем 7 различных сущностей, так что разрезав задачу на законченные куски - объекты, мы даем себе и коллегам возможность уменьшить количество сущностей, которые нужно держать в голове.

Далее, программа, порезанная на части, допускает замену одних частей на другие. Это дает возможность разрабатывать программу, постепенно наращивая сложность и заменяя ненаписанные еще куски затычками, тестировать ее, заменяя сложную реализацию чего-то предсказуемой затычкой и переносить готовые куски кода с место не место, без переписывания заново всей программы в случае небольшого изменения логики.

Когда такой подход оправдан - практически всегда. Программа с хорошо устроенной внутренней структурой гораздо гибче и поддерживается лучше, чем длинная простыня без таковой структуры.
Ответ написан
Комментировать
erniesto77
@erniesto77
oop, rb, py, php, js
Во первых принцип OOP нужен когда вы хотите как перфекционист разложить все по полочкам, во вторых когда в проекте больше одной-двух сущностей и их экземпляров

Например, сервис вопросов и ответов

questions (hasMany answers)
    answers (belongsTo question)
        likes (belongsTo answer)
        comments (belongsTo answer)


Чтобы не плодить повторяющийся код, создается модель (шаблон) с помощью которой можно создавать необходимое количество экземпляров. Во всех фреймворках есть логика для связей между этими экземплярами по принципу hasMany/belongsTo

Еще есть понятия интерфейсов, абстракций и описание их работы в сервис-провайдерах (это надо гуглить, смотреть примеры).

Таким образом мы структурируем код и данные с которыми работает код. И это все must have, если ты хочешь показать свой скилл
Ответ написан
Комментировать
Adamos
@Adamos
Простая аналогия разницы между процедурщиной и ООП.

Вот ты пишешь научную статью, в которой есть некий основной текст, но в нем то и дело идут отсылки к подробностям опытов, пространные цитаты из чужих работ и куча таблиц по нескольку страниц каждая.
Процедурный подход - это книга: весь текст идет сплошной простыней, и чтобы следить за ходом основной мысли, тебе приходится пролистывать подробности.
ООП - это гипертекст: перед тобой только основной материал, ничем не замусоренный. Если хочешь уточнить какие-то детали - легко переходишь по ссылке и работаешь именно с ними. Если же они тебя не интересуют - то они тебе и не мешают.

Так вот, после определенного объема и сложности работать с "книжкой" (например, найти конкретную таблицу и сверить ее данные) тяжко даже автору.
Ответ написан
Комментировать
@WaterSmith
Android-разработчик. Java, Kotlin
зачем, а главное - когда следует использовать классы, а когда достаточно будет написать несколько простых функций.

Зачем - здесь уже ответили, ради структурирования кода и упрощения поддержки, масштабируемости и автоматизированного тестирования.
Когда - если вы пилите свой проект, то тогда, когда почувствуете что вам это нужно. Когда поймете, что процедурный код не можете удержать в голове. Тогда вы полностью перепишите свой код в ООП стиле и у вас не будет больше возникать таких вопросов. Естественно, если у вас маленький проект, который умещается в несколько процедур, то вы к этому не прийдете, но так там оно и не нужно.
А вот если вы работаете в команде, то уже имеющаяся кодовая база вам всё покажет. Сложно писать процедурно часть проекта построенного на ООП.
Ответ написан
Комментировать
TrueBers
@TrueBers
Гуглю за еду
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы