ооп 2. Преимущества и недостатки структурного и объектно ориентированного программирования. - keykranz/oop_ex GitHub Wiki
Преимущества и недостатки структурного и объектно-ориентированного программирования.
Преимущества и недостатки структурного программирования.
-
(+) Логически-связанные функции находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
-
(+) Облегчение написания программ
-
(+) Сильно упрощается процесс тестирования и отладки программ.
-
(+) Легко распределять задачи между программистами
-
(+) Нисходящая разработка даёт возможность на ранних этапах согласовывать с заказчиком прототип. В случае недовольства, придётся переписывать минимум кода.
-
(+) Нисходящая декомпозиция позволяет совмещать проектирование и кодирование (и тестирование).
-
(+) Начиная разработку с верхних уровней, избавляемся от логических ошибок.
-
(-) Отсутствие гибкости системы. Сложно изменить формы данных и структур.
-
(-) Исключительные ситуации обрабатываются вперемешку с логикой кода - это приводит к большому количеству проверок и необходимости "протаскивать" ошибку до того места, где ее можно будет обработать, через все уровни кода
-
(-) Изменение кода ведет к понижению его надежности
-
(-) Изменении данных приведет к несовпадению иерархии действий и иерархией по данным
Преимущества и недостатки ООП.
-
(+) «Более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку.
-
(+) Сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями.
-
(+) Возможность легкой модификации (при грамотном анализе и проектировании)
-
(+) Увеличивается показатель повторного использования код
-
(+) Система более гибкая, код легче поддерживать. Эволюция ПО.
-
(+) Можно обрабатывать ошибки отдельно от логики кода и сразу прокидывать их в место, где они могут быть обработаны
-
(-) Невозможно совмещать этапы проектирования, кодирования и тестирования
-
(-) Производительность программ хуже. Увеличивается размер кода
-
(-) Появление мертвого кода, кода "в корзину"
-
(-) Легче совершить логическую ошибку
-
(-) На проектирование уходит гораздо больше времени