metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-12-30 09:16 pm

C# и namespace

"Не прошло и сто лет", как я обнаружил, что объявлять namespace необязательно - классы объявленные на верхнем уровне в файле, становятся членами namespace по умолчанию. А студия неймспейс генерит автоматом всегда.
Внимание, вопрос - если меня раздражает лишний отступ на namespace и я убрал его объявление - кошерно ли это? Объявления классов стали начинаться от левого края и это немного читабельнее для мозга, но можыд, я тем самым нарушил какие-нибудь тонкие талмудистские запреты и меня ждет кара?

[identity profile] w00dy.livejournal.com 2009-12-30 07:44 pm (UTC)(link)
самого себя с самим собой. Банальный пример: есть у меня в asp.net проекте несколько страниц Users. Если бы лежали в одном неймспейсе, пришлось бы придумывать разные именя аля AllUsers, CompanyUsers, etc, а так разнёс по неймспейсам и в итоге всё красиво.

[identity profile] metaclass.livejournal.com 2009-12-30 07:47 pm (UTC)(link)
Хм, я в одном проекте классы с одинаковыми именами никогда не делаю.
Хотя у меня и страниц то там немного, там в основном бизнес-логика над несколькими RESTful сервисами.

[identity profile] w00dy.livejournal.com 2009-12-30 07:53 pm (UTC)(link)
Я тоже стараюсь классы с одинаковыми именами не делать, но в жизни всякое бывает. Да и с неймспейсами как-то аккуратней получается. Всё своё лежит в коробочке MyNamespace, всё чужое в других. А в global ложить как-то некузяво.

[identity profile] metaclass.livejournal.com 2009-12-30 07:57 pm (UTC)(link)
Точно, оно же в global попадает. Вот же трасца, я надеялся что в дефолтный неймспейс.

[identity profile] w00dy.livejournal.com 2009-12-30 08:20 pm (UTC)(link)
дефолтных неймспейсов нет. Точнее asp.net что-то придумывает при компиляции. А так - есть только дефолтный namespace alias, global который, но можно свои задавать.

[identity profile] metaclass.livejournal.com 2009-12-30 08:22 pm (UTC)(link)
У проекта есть же основной неймспейс, в него еще все ресурсы попадают.

[identity profile] w00dy.livejournal.com 2009-12-30 08:30 pm (UTC)(link)
А, ты про этот. Это не более чем информация куда класть новые елементы (классы и ресурсы, например) и не более. При компиляции она нигде не используется. А в сборке может лежать всё что угодно в любых неймспейсах, хоть в System.*

[identity profile] udpn.livejournal.com 2009-12-30 11:46 pm (UTC)(link)
Кто-нибудь вообще видел хоть раз конфликт имён вживую?

Я за свои скромные 9 лет практики не видел ни разу. Ей-богу.