ооп 2. Преимущества и недостатки структурного и объектно ориентированного программирования. - keykranz/oop_ex GitHub Wiki

Преимущества и недостатки структурного и объектно-ориентированного программирования.

Преимущества и недостатки структурного программирования.

  • (+) Логически-связанные функции находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).

  • (+) Облегчение написания программ

  • (+) Сильно упрощается процесс тестирования и отладки программ.

  • (+) Легко распределять задачи между программистами

  • (+) Нисходящая разработка даёт возможность на ранних этапах согласовывать с заказчиком прототип. В случае недовольства, придётся переписывать минимум кода.

  • (+) Нисходящая декомпозиция позволяет совмещать проектирование и кодирование (и тестирование).

  • (+) Начиная разработку с верхних уровней, избавляемся от логических ошибок.

  • (-) Отсутствие гибкости системы. Сложно изменить формы данных и структур.

  • (-) Исключительные ситуации обрабатываются вперемешку с логикой кода - это приводит к большому количеству проверок и необходимости "протаскивать" ошибку до того места, где ее можно будет обработать, через все уровни кода

  • (-) Изменение кода ведет к понижению его надежности

  • (-) Изменении данных приведет к несовпадению иерархии действий и иерархией по данным

Преимущества и недостатки ООП.

  • (+) «Более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку.

  • (+) Сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями.

  • (+) Возможность легкой модификации (при грамотном анализе и проектировании)

  • (+) Увеличивается показатель повторного использования код

  • (+) Система более гибкая, код легче поддерживать. Эволюция ПО.

  • (+) Можно обрабатывать ошибки отдельно от логики кода и сразу прокидывать их в место, где они могут быть обработаны

  • (-) Невозможно совмещать этапы проектирования, кодирования и тестирования

  • (-) Производительность программ хуже. Увеличивается размер кода

  • (-) Появление мертвого кода, кода "в корзину"

  • (-) Легче совершить логическую ошибку

  • (-) На проектирование уходит гораздо больше времени