Использование глобальных:: для конфликтующих пространств имен

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

Насколько ReSharper заинтересован, можно хотеть отбросить JetBrains быстрое электронное письмо, было бы интересно знать, есть ли у этих парней какие-либо планы относительно F#.

9
задан Mogsdad 26 September 2015 в 13:02
поделиться

5 ответов

Одной из законных причин конфликта пространств имен может быть использование внутренних библиотек, которые были написаны для более ранних версий .Net, в котором не было функциональности, добавленной в более поздних версиях. В .Net 1.1 дней, например, Я написал класс реестра, который обернул вызовы реестра API. По чистой случайности имена методов, которые я выбрал, были точно такими же, как и в более позднем классе реестра .Net, и они делали точно такие же вещи, поэтому было легко отключить мой собственный код. Для более сложных задач может быть полезна возможность использовать более старый фрагмент кода с плохим именем с квалификатором global :: .

Намеренное присвоение имени новому фрагменту кода с использованием существующего пространства имен .Net однако определенно будет запахом кода.

7
ответ дан 4 December 2019 в 07:35
поделиться

Как правило, global :: используется для указания «Я хочу начать с вершины структуры пространства имен». Если у меня есть пространство имен MyProduct.System , то все, что находится в пространстве имен MyProduct , не сможет получить доступ к пространству имен Microsoft System . Это запах кода? Может быть, иногда, но не особенно вонючим.

13
ответ дан 4 December 2019 в 07:35
поделиться

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

7
ответ дан 4 December 2019 в 07:35
поделиться

У Microsoft есть несколько хороших рекомендаций по пространству имен в превосходной книге Framework Design Guidelines 2nd Ed. . В общем, они не рекомендуют вводить сложности (например, называть ваш тип Stream).

Я не думаю, что когда-либо использовал квалификатор global ::. Обычно я считаю это запахом кода (хотя есть исключения, как указывают MusiGenesis и шестизначные переменные).

2
ответ дан 4 December 2019 в 07:35
поделиться

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

Я не вижу здесь запаха кода, это просто название isses;)

0
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

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