.Net Полное квалифицированное имя для переменного типа
-
29-09-2019 - |
Вопрос
Где я работаю, я часто вижу такой код:
public void Test(Models.User.UserInfo userInfo, Models.User.UserParameter param)
{ ... }
Лично я предпочитаю видеть что-то в этом роде:
public void Test(UserInfo userInfo, UserParameter param) { ... }
И иметь импорт сверху.
Что ты думаешь об этом ? Какая лучшая практика? Что про и минусы обоих? Как я мог убедить своих товарищей по команде?
Я нахожу второй вариант быть более понятным.
Решение
Определенно используйте using
Директива, ИМО. Как правило, это просто код, который был автогенерирован Visual Studio. Я не видел никого намеренно написать код, как это вручную. ИМО, стоит убедиться, что весь код, который люди будут читать выглядит Как и люди писали это - поэтому добавив Директива по использованию и уменьшаю имена здесь. Это делает его намного легче читать - особенно когда пространства имен длились долго.
Другие советы
Я склонен использовать полностью квалифицированное имя, если тип используется только один или, может быть, дважды в файле кода. Для всего остального я использую using
Но это также зависит от длины полного имени. Это все о написании красивых, легко читать код.
Во всех, кроме нескольких обстоятельств, я бы сказал, import
или using
Пространства имен - лучшая практика. Это имеет дополнительное преимущество ранней деградации: компилятор будет жаловаться, если он не сможет найти пространство имен.
Среди нескольких обстоятельств, где необходимо полностью квалифицированное имя (чтобы быть более правильным: это не от корки до корки Квалифицированные, вы не указываете версию или ключ) - это то, где имена столкновения произойдут (т. Е. Когда два пространства имен происходят, чтобы иметь то же имя, я вижу, что это часто происходит с Util
Классы, которые многие поставщики добавляют в их libs) (обратите внимание, что вы можете использовать имена классов псевдоним using
). Или когда вам нужно квалифицировать имя как строку, но это еще один корпус использования (т. Е. С отражением). Изредка, при отладке, это помогает использовать FQN, потому что отладчик не позволяет добавлять using
Директива.
В случае, если вы используете имя только один раз, вы можете испытывать соблазн использовать FQN, но в моем опыте вы быстро найдете себя, используя более одного имени пространства имен и рефакторируйте его для импорта пространства имен в заголовке.