Атрибуты и аннотации: метаданные против чистоты кодаАтрибуты (Attributes) в языке C# - это удобный способ добавления метаданных к классу, свойству или методу. Этот инструмент иногда может быть очень полезным, но всегда ли его применение оправдано? Например, допустим у нас имеется класс Person:
}
С помощью атрибута Serializable можно указать, что экземпляры этого класса могут сериализоваться, не используя интерфейс ISerializable:
В общем, можно найти множество задач, где без атрибутов ну просто никуда. Но в некоторых случаях, по моему мнению, атрибуты вносят в код совершенно ненужные зависимости и нарушают его “чистоту”. Допустим, наш объект Person храниться в базе данных и мы решили использовать ORM фреймворк для его получения/сохранения. Большинство ORM фреймворков допускают два типа настройки меппинга - через атрибуты или через xml-конфигурацию. Допустим, мы выбрали вариант с атрибутами. Наш класс превратится во что-то вроде этого:
Далее, допустим нам нужно использовать фреймворк для валидации, который также предоставляет возможность конфигурации через атрибуты. Наш класс снова меняется:
Теперь давайте посмотрим на наш класс. Во-первых он стал в два раза больше по количеству строк. Если учесть, что добавленные строки - это метаданные, а не код, то очевидно, что читаемость кода ухудшилось. Но это не самое плохое. А плохо то, что наш класс теперь зависит от классов фреймворков ORM и валидации. А так как Person - класс предмеьной области, то он должен быть отделен от слоя доступа к данным и рендеринга вида. Причем, это разделение пожет быть как условным, так и физическим, когда предметная область выделена в отдельную сбоку/jar. Тогда вся сборка получит совершенно ненужную зависимость от классов других слоев. Да и вообще, лушчее решение для предметной области - это набор POCO/POJO классов, не зависящих ни от каких сторонних библиотек. Но и это еще не все. Теперь давайте представим, что мы захотели реализовать алитернативный способ хранения с использованием другого ORM. Тогда количество атрибутов и зависимостей должно удвоится?
Вывод из всего этого такой - несмотря на агитацию производителей различных фреймворков и библиотек использовать такой инструмент как атрибуты нужно деликатно и осторожно. Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.