Я часто сталкиваюсь с шаблоном, что у меня есть основной класс и несколько меньших вспомогательных классов или структур.
Я хотел бы сохранить имена структур thoses как можно более чистыми. Поэтому, когда у меня есть класс, который называется CarFinder
, который сильно использует какой-то специальный объект Key, который используется (или главным образом) внутри, я бы хотел назвать этот объект Key
вместо CarFinderKey
.
Все, чтобы удалить весь лишний пух, который отвлекает меня от того, когда я пытаюсь понять класс во время его чтения.
Конечно, я не хочу загрязнять остальную часть кода небольшим вспомогательным классом, который называется Key
- он, скорее всего, столкнется и запутается.
В идеальном мире мне хотелось бы иметь ключевое слово как internal to this namespace
, но поскольку этого не существует, это оставляет мне следующие варианты, о которых я могу думать:
- Используйте
internal
и поместите класс в другой проект.
Преимущество: Идеальная инкапсуляция.
Недостаток: Много организационных издержек и ненужных сложных зависимостей.
Примечание. Я не говорю о действительно больших автономных системах, которые, несомненно, заслуживают собственной сборки.
- Поместите его в другое дочернее пространство имен, например
CarFinding.Internal
Преимущество: Легко реализовать.
Недостаток: Все еще может загрязняться, когда пространство имен случайно импортируется.
- Поместите класс-помощник как дочерний класс в
CarFinder
.
Преимущество Не загрязняет внутренне и даже может рекламироваться как общедоступная вспомогательная структура, которая подвергается внешнему миру с помощью CarFinder.Key
Недостаток. Поместите класс-помощник в один файл или инкапсулируйте его во внешний файл с помощью public partial class
вокруг него. Первый делает файл ненужным долго, второй просто чувствует себя очень уродливо.
- В любом случае назовите его
CarFinderKey
Преимущество Легко реализовать.
Недостаток Добавляет, по моему мнению, слишком много пуха к CarFinder
. Все еще не загрязняет имена, просто с именем, которое вряд ли столкнется.
Какое рекомендуемое руководство?