Окрім прийнятої відповіді, хочу зазначити ще один приклад наскрізного занепокоєння: усунення. Скажімо, я просто хочу викликати інші компоненти в моїй екосистемі локально, як ніби вони працюють. Можливо, в деяких випадках вони це навіть роблять. Але тепер я хочу запустити свої сервіси, розповсюджені в хмарі або кластері. Чому я повинен дбати про цей аспект як розробник додатків? Аспект може допомогти визначити, кому дзвонити і як, послідовно передавати передані дані, якщо це необхідно, та здійснювати віддалений дзвінок. Якщо все працює в процесі, аспект просто переадресує місцевий дзвінок. На стороні виклику аспект десериалізує дані, здійснить локальний дзвінок та поверне результат.
Тепер дозвольте розповісти вам невелику історію про "тривіальні" речі, такі як вихід журналу: Лише кілька тижнів тому я відновив складну, але не занадто велику кодову базу (близько 250 К рядків коду) для клієнта. У кількох сотнях класів був використаний один вид каркасу лісозаготівлі, в іншому кілька сотень. Тоді було кілька тисяч рядківSystem.out.println(*)
там, де дійсно повинен був бути вихідний журнал. Тож я закінчив виправити тисячі рядків коду, розкиданих по кодовій базі. На щастя, я міг би використати кілька хитромудрих хитрощів в IntelliJ IDEA (структурний пошук та заміна), щоб пришвидшити всю дію, але хлопчик, ти не вважаєш, що це було тривіально! Зрозуміло, що сильно залежати від контексту журнал налагодження завжди відбуватиметься в тілі методу, але багато важливих типів журналу, такі як виклики методу відстеження (навіть ієрархічно з чітко відрезаним результатом), ведення журналу як оброблених, так і необроблених винятків, аудит користувачів (реєстрація дзвінків до обмежені методи, засновані на ролях користувача) тощо можуть легко реалізовуватися в аспектах, не забруднюючи їх вихідним кодом. Щоденному розробнику додатків не потрібно думати про це або навіть бачити дзвінки реєстратора, розкидані по кодовій базі.
Я можу придумати подібні пояснення для інших наскрізних проблем. Зберігання коду чистим та вільним від розсіювання та заплутування IMO - це питання професіоналізму, не що інше. І останнє, але не менш важливе, він зберігає код читабельним, ремонтопридатним, реконструйованим. Амінь.