Подтвердить что ты не робот

Организация вспомогательных или вспомогательных классов проекта С#

Каковы некоторые рекомендации относительно того, где вы должны иметь вспомогательные классы в .NET-проекте? Ссылаясь на классы, отличные от материалов бизнес-уровня, но такие приложения и приложения, как администраторы конфигураций appSetting и другой код, который иногда может быть специфичным для модуля или иногда использоваться во всем приложении.

4b9b3361

Ответ 1

Я всегда допускаю, чтобы такие вещи были довольно текучими. Тем не менее:

  • Я тестирую "вспомогательные" классы так же, как и любой другой класс. Это заставляет их не статично.
  • Я могу начать с создания этих помощников в качестве отдельных методов, когда это необходимо. Поскольку я считаю, что они нужны более чем в одном классе, я переведу их в свой класс или в класс "Утилиты" в том же проекте.
  • Если я нахожу, что они необходимы в нескольких проектах, я перемещаю их выше в иерархии: от проекта до решения, от решения до подсистемы, от подсистемы до приложения, от приложения до библиотеки или структуры и т.д..

Ответ 2

У меня почти всегда есть библиотека классов MyProject.Core в моем решении, где я помещаю такие вещи.

Изменить: я мог бы ответить на "больший" вопрос.

В одном проекте все зависит от размера проекта. В Руководстве по дизайну Microsoft говорится о том, что вы не должны создавать пространство имен, если в нем есть меньше пяти (поправьте меня, если я ошибаюсь в этом числе).

Ответ 3

Большинство из нас просто бросают их в папку "Помощники".

В зависимости от помощника вы можете пометить виртуальные методы, чтобы при необходимости их высмеять. Это или привязка к интерфейсу, который он реализует, но если у вас есть только один конкретный интерфейс, он может быть излишним.

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

Даже тогда передумайте.

Ответ 4

Я стараюсь помещать их в пространство имен utils. Либо в пространстве имен mainproject, если они довольно общие, например. MyProject.Utils.MyHelperClass, или если они более конкретны, то подпространство имен MyProject.CRM.Utils.MyCRMHelperClass.

Ответ 5

Мы помещаем такие классы в сборку под названием Common, например, предназначенную для ссылки на все проекты, которые в ней нуждаются, за исключением случаев, когда хелперу нужно использовать некоторые объекты buisness или основные объекты.

Ответ 6

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