Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Объявление класса и namespace


Автор: Rickert 29.4.2008, 05:41
Зачем люди всё время, создавая новый класс его суют в namespace?
В C++ - это вообще крайность, для объединения глобальных функций для конкретного класса или других случаев.
Зачем это делать постоянно?

Автор: Walker 29.4.2008, 06:50
Логическая группировка, разрешение конфликтов имён...

Автор: Rickert 29.4.2008, 06:56
Walker, Зачем огород городить: для каждого класса? Например, у меня сейчас, в проекте от этого только проблемы, потому что есть System.Drawing.Point и так же в либе, которую я использую есть Point, у результате конфликт. Надо разбираться с этими using'ами.
Вы мне скажите: может есть ещё какие-то причины совать всё по namespace'м?

Автор: mr.DUDA 29.4.2008, 08:43
Не нравится - можно объявить класс без namespace и жить с этим. Конфликт с двумя Point решается через объявление алиаса:
Код
using Point = Correct.Namespace.Point;


Юзинг по необходимости добавить элементарно: пишешь имя класса, жмёшь Shift+Alt+F10 (или мышкой по смарт-тегу внизу-справа имени класса) и выбираешь нужный юзинг, он добавится вверху исходника автоматически. Не нужно ни в чём лазить, искать где там тот или этот класс.

Неймспейсы удобны тем что позволяют логически сгруппировать набор классов, енумов и структур в подмножество среди всех классов доступных в проекте и референсах. Если бы все классы были свалены в одну кучу, то (кроме конфликтов) стал бы неюзабельным IntelliSense. Наконец, по юзингам вверху исходника можно примерно сориентироваться какие подсистемы были использованы в коде внизу (например System.IO говорит что мы тут поработали с файлами, а System.Windows.Forms - что юзаем формы и контролы и т.п.).

Коммерческие библиотеки, опять же, все классы объявляют в одном крупном или крупном и нескольких вложенных неймспейсах по имени компании или продукта, что удобно.

В С++ мало используют пространства имён чисто по привычке, ИМХО. Хотя есть и обратный пример - boost.

Автор: Rickert 29.4.2008, 11:26
mr.DUDA, solved smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)