Пространства имен.NET

есть способ отключить его?

blockquote>

Да, вам нужно использовать только флаг JSON_UNESCAPED_SLASHES.

! important прочитайте до: https://stackoverflow.com/a/10210367/367456 (знайте, с чем имеете дело - узнайте своего врага)

blockquote>
json_encode($str, JSON_UNESCAPED_SLASHES);

Если у вас нет PHP 5.4 под рукой, выберите одну из многих существующих функций и измените их в соответствии с вашими потребностями, например http://snippets.dzone.com/posts/show/7487 (архивная копия) .

Пример демонстрации

Пример:

"http:\/\/www.example.com\/"
"http://www.example.com/"
8
задан Community 23 May 2017 в 10:27
поделиться

9 ответов

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

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

Править: Обратите внимание, что этим вопросом является почти дубликат, должен папки в решении соответствовать пространству имен?

11
ответ дан 5 December 2019 в 04:55
поделиться

Да, в пространстве имен.NET не зависит от файловой системы или чего-либо еще. Это - большое преимущество, по-моему. Например, можно разделить код через различные блоки, который позволяет гибкое распределение.

При работе в Visual Studio IDE имеет тенденцию представлять новое пространство имен, когда Вы добавляете новую папку к дереву проекта.

Вот полезная ссылка из MSDN:

Рекомендации по именованию пространства имен

Общее правило для именования пространств имен состоит в том, чтобы использовать название компании, сопровождаемое технологическим именем и дополнительно функцией и дизайном следующим образом.
CompanyName. TechnologyName[.Feature][.Design]

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

Править:

Я настоятельно рекомендую любому разработчику .NET получить копию руководства по проектированию Платформы, которое Эта книга поможет Вам понять, как и почему.NET разработана.

8
ответ дан 5 December 2019 в 04:55
поделиться

Решение VS обычно содержит один или несколько проектов. Проекты Thse имеют пространства имен по умолчанию (обычно, пространство имен является просто названием проекта). Обычно, если Вы добавите папку в рамках проекта, то все классы в нем назовут следующим образом:

DefaultNamespace. FolderName. ClassName

Конечно, можно изменить пространство имен по умолчанию проекта и иметь классы быть названными любым способом, которого Вы желаете.

До, когда/как повредить материал в проекты, это - вопрос опыта и/или предпочтения. Однако необходимо абсолютно повредить материал в проекты в решении для хранения проекта организованным. Если управление слишком многими блоками становится громоздким (как предложенный Blair), Вы всегда можете ILMerge Ваши блоки в единственный блок. То, что является большим о ILMerge, - то, что даже при том, что Вы заканчиваете со всего одним блоком, все Ваши классы сохраняют свои исходные полностью определенные имена.

Также важно помнить, что решение VS не имеет никакого влияния на код - т.е. они не становятся созданными. Решениями VS является только способ сгруппировать проекты; это - проекты, которые разработаны и превращены DLLs.

Наконец, VS позволяют нам, Вы добавляете "виртуальные" папки где угодно в решении. Эти папки не отображаются на папку в файловой системе и просто используются, поскольку другой означает помогать Вам организовать свои проекты и другие артефакты в решении.

4
ответ дан 5 December 2019 в 04:55
поделиться

Пространства имен являются логической группировкой, в то время как проекты являются физической группировкой.

Почему это важно? Думайте о.NET 2.0, 3.0, и 3.5..NET 3.0 является в основном.NET 2.0 с некоторыми дополнительными блоками, и 3.5 добавляет еще несколько блоков. Так, например.NET 3.5 добавляет DataPager управление, которое является веб-элементом управления и должно быть сгруппировано в System.Web.UI.WebControls. Если бы пространства имен и физические местоположения были идентичны, то это не могло бы быть, потому что это находится в другом блоке.

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

(Кроме того, нет ничего неправильно с наличием Ваших физических и логических довольно подобных разметок.)

4
ответ дан 5 December 2019 в 04:55
поделиться

Действительно, среда .NET позволяет Вам бросать свой код в IDE/файловую систему как спагетти против стены.

Это не означает, что означают, что этот подход нормален, как бы то ни было. Обычно хорошая идея придерживаться project.foldername. Подход класса, который был упомянут ранее. Также действительно хорошая идея сохранить все классы от одного пространства имен в тот же класс.

В Java можно сделать странные вещи как это, также получив всю "гибкость", которую Вы хотите, но инструменты имеют тенденцию сильно препятствовать ему. Честно, одна из самых запутывающих вещей для меня в том, чтобы быть представленным миру .NET была, насколько неаккуратный/непоследовательный это может быть благодаря относительно плохому руководству. Ее легкое для организации вещей нормально с небольшой мыслью, все же.:)

3
ответ дан 5 December 2019 в 04:55
поделиться

Пространства имен являются чисто семантическими. Пока они обычно отражают структуру папок, по крайней мере, при использовании Visual Studio IDE, они не должны.

Можно было сослаться на то же пространство имен в нескольких библиотеках, ужасных но верных.

2
ответ дан 5 December 2019 в 04:55
поделиться

Можно добавить папки к решению для каждого пространства имен. В то время как это все еще скомпилирует в единственный исполняемый файл, это организует Ваши исходные файлы и дает (что я думаю), желаемый эффект?

Я обычно добавляю папку для каждого пространства имен в моем проекте и вкладываю их согласно той же иерархии (MyApp. Представление. Диалоговые окна, например)

2
ответ дан 5 December 2019 в 04:55
поделиться

Я всегда рассматривал организацию исходного файла и идентификаторы присвоения к классам, и возражает, чтобы быть двумя отдельными проблемами. Я склонен сохранять связанные классы в группах, но не каждая группа должно быть пространство имен. Пространства имен существуют (более или менее) для решения проблемы конфликтов имен — на языках плоского пространства имен как C, Вы не можете обойти два фута, не спотыкаясь за идентификаторы как mycompany_getcurrentdate или MYCGetCurrentDate, потому что риск конфликта с другой функцией в третьем лице (или система) библиотека настолько намного меньше. При создании пакета или пространства имен для каждого логического разделения Вы получили бы (пример Java) имена классов как java.lang.primitivewrapper.numeric.Integer, который является в значительной степени излишеством.

1
ответ дан 5 December 2019 в 04:55
поделиться

разница в том. вы включаете 'using' в это пространство имен.

очень просто.

выбор имени и того, нужно ли / сколько '.' разделители, которые вы используете, полностью зависит от вас.

VS по умолчанию добавляет .foldernames к вашим пространствам имен, чтобы попытаться быть полезными.

эта статья довольно хорошо объясняет пространства имен: http://www.blackwasp.co.uk/Namespaces.aspx

Там также есть пример соглашения об именах ближе к концу, хотя ваше соглашение об именах - ваше призвание! ;)

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

3
ответ дан 5 December 2019 в 04:55
поделиться
Другие вопросы по тегам:

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