Pull to refresh

Comments 9

> Что такое аспекты и для чего их использовать прекрасно описано, например, на wiki.
Я бы не был столь категоричен
Посмотрите лекцию, на которую есть ссылка в конце поста — там довольно интересно об этом рассказывается.
Лекцию я в закладки добавил.
У меня есть сомнения в качестве пояснений на отсылаемую страницу вики.
А как у этой штуки на счет производительности, тестируемости и поддерживаемости?
Производительность: после компиляции java в class файлы, в них добавляется еще байткод из аспектов. Так что производительность не должна отличаться от того, как если бы вы код из аспекта написали прямо в методе, к которому этот аспект применяется.
Про тестируемость: опять же, в той же лекции говорится, что бы в аспектах не было много кода — весь код выносить в отдельные классы, к которым уже можно написать тесты.
Про поддержку: подозреваю, что аспекты могут очень сильно удивить человека, который в дальнейшем будет поддерживать этот код, поэтому применять их стоит очень осторожно.
UFO just landed and posted this here
Извечный вопрос, зачем? Только тот кто не узрел во что превращает aspectJ байт-код java-программы, способен его использовать. Как насчет времени компиляции и финального размера вашего бинарника?
Время компиляции в Android Studio изменилось незаметно (учитывая, что gradle и так не особо быстр). Про размер бинарника: почему он должен увеличиться? И с ними и без на выходе получается одинаковый байткод (приблизительно), разница в организации java кода.
Зачем? Воспринимайте это как еще один инструмент, а как применять этот инструмент уже думайте сами.
Приведу пример того, что пришло мне в голову: в многопоточном приложении иногда, что бы отладить работу требуется вставить логи в каждый метод. Если таких методов пару десятков, то задача это не самая приятная, да и засоряет код. Используя аспекты можно это сделать быстро и просто) После того, как проблема решена достаточно удалить класс аспекта и код больше не будет засорен лишними вызовами логов.
Но ведь как раз для такой задачи хватает штатных средств IoC контейнера (я не имею в виду spring), ну или на худой конец есть аннотации. АОП выглядит простым на простых задачах, но эта простота быстро улетучивается(возьмите к примеру spring-roo).
Sign up to leave a comment.

Articles