Аспектно-орієнтоване програмування: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Maksshal (обговорення | внесок)
Немає опису редагування
Maksshal (обговорення | внесок)
Немає опису редагування
Рядок 5:
Сучасні програмні системи часто вирішують величезну кількість надскладних завдань, що потребує хороших інженерних навичок від їх розробників та надійності інструментальних засобів розробки. При зростанні складності таких систем зростає і програмний код, розробнику стає все важче охопити всі деталі реалізації системи. При підтримці великих програмних засобів зростає час знаходження та виправлення помилки, ускладнюється додавання нових характеристик, оскільки стає все важче визначити наскільки зміни вплинуть на систему, чи не внесуть додаткові помилки та дефекти. Для вирішення таких завдань застосовують різноманітні інженерні засоби, як от багатофункціональні середовища розробки, шаблони проектування, готові програмні каркаси тощо.
<br />
Часто згадуваним недоліком об’єктно-орієнтованого підходу є неможливість локалізації наскрізної функціональності в одному класі. Як приклад такою функціональності часто називають необхідність ведення журналів подій, керування винятковими ситуаціями, перевірка прав доступу. Код, що відповідає за дану функціональність, часто розкиданий по різних класах. Це, з одного боку, не дозволяє сконцентрувати увагу на основній бізнес-логіці класу і ускладнює читання коду. З іншого боку, ускладнюється внесення змін у методи роботи наскрізної функціональності<ref>http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4987&rep=rep1&type=pdf</ref>., що не завжди можна виправити правильним використанням інтерфейсів чи шаблонів проектування.
<br />
В результаті розроблюваний модуль містить заплутаний код, що задовольняє різні вимоги. Негативні властивості такого коду: