Организация пространства имен - AOP Validators - PullRequest
1 голос
/ 01 декабря 2008

Я начал использовать аспекты для проверки параметров в нашей среде разработки. Это прекрасно работает, и мне нравится не засорять первую половину открытого метода кодом проверки.

Что мне интересно, есть ли у кого-нибудь рекомендации относительно того, где в структуре пространства имен вы бы поместили проверку параметров? Часть меня считает, что, поскольку это функциональность верхнего уровня, она должна находиться в пространстве имен продуктов верхнего уровня - очень похоже на то, как System используется в .NET Framework. Я просто беспокоюсь о том, чтобы сборка ядра раздувалась с такими дополнительными функциями, как это происходит дальше.

В том виде, в каком оно сейчас стоит, у меня есть что-то вроде:

[Компания]. [Product] .ParameterValidators

В этом примере ParameterValidators - это имя класса (аспект), который содержит функциональность.

Помимо этого, я был бы признателен, если бы у кого-то были дополнительные рекомендации по включению аспектов в существующую кодовую базу в отношении структурного размещения.

1 Ответ

1 голос
/ 01 декабря 2008

В данный момент вы рассматриваете разбиение с использованием технических критериев, т. Е. «Поместите все валидаторы в пространство имен, потому что они валидаторы». Это не учитывает причину, по которой валидаторы существуют .

Я предлагаю разделить по функциональности:

  1. Универсальные валидаторы (например, нулевая проверка и проверка диапазона) входят в универсальное пространство имен.

  2. Более специфичные валидаторы (например, CustomerValidators) входят в более специфичные пространства имен.

Общая идея заключается в том, что у вас нет 1 класса, который содержит все возможные валидаторы, у вас есть несколько классов (в разных пространствах имен), каждый из которых объявляет валидацию по определенной причине .

...