Допустимо ли иметь типы с одинаковыми именами в разных пространствах имен? - PullRequest
0 голосов
/ 02 августа 2010

Я вижу 7 типов, каждый из которых называется Error в одной и той же кодовой базе.Это приемлемо?

Мой инстинкт говорит, что иметь типы с одинаковыми именами в разных контекстах домена - это нормально, но это повышает вероятность неоднозначности при работе с «материнским решением».

Ответы [ 3 ]

3 голосов
/ 02 августа 2010

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

2 голосов
/ 02 августа 2010

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

Error звучит так, как будто это может быть эквивалент класса Exception, который является основой иерархии типов исключений CLR; это похоже на хорошую модель для описания ошибок. Возможно, вы могли бы вывести общее поведение между вашими классами ошибок в один базовый класс с именем Error, а затем унаследовать его для получения более кратких или специфичных для проекта подклассов.

1 голос
/ 02 августа 2010

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

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

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

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

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