Действительно ли приемлемо иметь типы с тем же именем в различных пространствах имен?

Я вижу 7 типов вся названная Ошибка в той же кодовой базе. Действительно ли это приемлемо?

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

0
задан Ben 2 August 2010 в 11:16
поделиться

3 ответа

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

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

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

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

1
ответ дан 4 September 2019 в 00:47
поделиться

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

3
ответ дан 4 September 2019 в 00:47
поделиться

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

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

2
ответ дан 4 September 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: