PostSharp & критические части кода - PullRequest
1 голос
/ 01 ноября 2011

Предположим, что критическая часть бизнес-правил приложения зависит от данного поведения, но то, что кодирование этого поведения явно загромождает ваш код, вы бы полагались на его инкапсуляцию в аспекте с PostSharp (или с любой другой аспектной средой для этого иметь значение)? Это «безопасный» и «мудрый» вариант, или всегда лучше явно кодировать поведение независимо от того, как оно будет загромождать код? А как насчет ремонтопригодности такого решения?

1 Ответ

2 голосов
/ 01 ноября 2011

Не рекомендуется помещать бизнес-правила или бизнес-логику в аспекты. Это побеждает цель АОП. Бизнес-правила / логика не являются сквозными проблемами. Если вы рассматриваете часть своей бизнес-логики как беспорядок, вам следует использовать обычные методы ООП для ее абстрагирования или извлечения в свои собственные методы.

Конечно, вы можете переместить это в аспект, но какова будет цель? Чтобы уменьшить беспорядок? Это не приемлемо для меня. Используйте аспекты для устранения беспорядка, не связанного с бизнес-логикой, чтобы ваша бизнес-логика была ясной. Если ваша бизнес-логика загромождена, вам необходимо провести рефакторинг.

PostSharp против других AOP-сред: если вы в конечном итоге добавите «критический код» в аспект, то PostSharp станет наилучшей средой для достижения максимальной производительности. Среды выполнения, такие как IoC, которые выполняют динамический перехват, не будут работать так же хорошо, как статически скомпилированный код. Кроме того, PostSharp имеет так много оптимизаций, что он выполняет на основе написанного вами кода, что никакая другая инфраструктура не может соответствовать.

...