Альтернатива библиотекам статических классов - PullRequest
2 голосов
/ 09 октября 2008

У меня есть большая коллекция статических классов 'Utility', которые содержат очень общие статические методы. Например, у меня есть класс CollectionUtility, который имеет полезные методы, такие как:

public static void RemoveDuplicates (коллекция ICollection) ... и т. Д.

В C # 3.0 я конвертировал их в методы расширения.

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

Вопрос для тех из вас, кто работает над крупными корпоративными проектами для крупных компаний: вы поддерживаете библиотеки таких классов или нет? Что ты?

Ответы [ 4 ]

1 голос
/ 09 октября 2008

Вы говорите о коде, который будет использоваться совместно с библиотекой. Статические методы имеют место в общих библиотеках. Проверьте System.Linq.Enumerable

Я бы следовал этим правилам:

  • Это не статические методы по умолчанию. Они должны быть только статическими методами, потому что они естественным образом не имеют состояния (поведение зависит только от параметров). Если они не являются естественными лицами без состояния, тогда вам следует создать подходящий класс для управления этим состоянием.
  • Накройте их юнит-тестами. Если вы не выполните модульное тестирование чего-либо еще, проверьте их. Это должно быть очень легко сделать. Если это не легко, это не правильно.

Если внедрение зависимостей вам нравится, вы все равно можете его иметь. Код, который опирается на статический метод, может вместо этого вызывать Func (T, U) или Action, который ссылается на этот статический метод.

0 голосов
/ 09 октября 2008

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

ИМХО, вы должны применять такие вещи, как универсальные, чтобы сократить размер ваших служебных методов / библиотек, и если вы используете только служебный метод в одном месте, то он не принадлежит общей библиотеке, но в конце дня у вас все еще может быть достаточно много.

Во всяком случае, это озадачивает меня. Если бы вы не поместили их в общую библиотеку, где бы вы их разместили? Копировать / вставлять в каждый проект или что-то в этом роде?

0 голосов
/ 09 октября 2008

Я обычно помещаю такие вещи, как конфигурация и константы, в одноэлементный или статический класс, потому что он никогда не изменится и может также быть "глобальным".

0 голосов
/ 09 октября 2008

Абсолютно нет. Служебные модули с течением времени превращаются в большие коллекции грубого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...