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