| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Писать using внутри namespace или вне: есть нюансы |
| Автор: Gunslinger 25.2.2010, 20:07 | ||
Будут ли доступны классы пространства имен А, если оно указано вне пространства имен моего кода?
Или писать using A; внутри namespace В? |
| Автор: CasperSC 25.2.2010, 23:14 | ||
| Если написать "А" там где оно у тебя написано в примере, то оно будет доступно в "Б": То же самое:
Так вот MessageBox.Show("Привет!"); доступен в таком виде из-за подключеного выше using System.Windows.Forms; Если не подключен, то доступ к нему осуществлялся бы так: System.Windows.Forms.MessageBox.Show("Привет!"); |
| Автор: Gunslinger 26.2.2010, 19:16 |
| using X; перед namespace -- типа доступ к классам Х всех namespaceов файла, а using X; внутри namespace -- доступ к классам Х только внутри данного неймспейса и его поднеймспейсов? |
| Автор: mrbrooks 1.3.2010, 09:28 | ||
нет. достаточно:
|
| Автор: Linus 1.3.2010, 16:36 |
| Думаю, правильнее писать юзинги выше нэймспейсов. Классы обычно живут в отдельных файлах. Если я пишу юзинги выше нэймспейса, я подчеркиваю, что он распространяется на текущий файл. Если внутри - я подчеркиваю (ошибочное) то, что юзинги распространяются на текущий нэймспейс (т.е. >= 1 file), так как он их аггрегирует (хоть это и невозможно, но сама вложенность об этом говорит). Плюс, если писать using внутри нэймспэйса, то можно использовать сокращенную форму юзингов (без первой части). Это усложняет чтение и понимание кода. Суммируя всё вышесказанное, я полагаю, что юзинги нужно использовать только выше нэймспейсов. |
| Автор: Ram1reS 1.3.2010, 17:26 |
| Microsoft Style Cop считает, что using должны быть внутри namespace. |
| Автор: Linus 4.3.2010, 13:58 |
| К тому же, http://using.castleproject.org/display/CASTLE/Coding+Standards тоже так считают... Только какими ценностями и принципами руководствуются они при этом - не ясно. А пока не ясно, то придерживаться такого стиля, думаю, глупо. |
| Автор: PashaPash 4.3.2010, 15:20 |
| Linus, неясно - это теперь сокращение для "я не нажимал F1 на строчке с ошибкой"? вот онлайновый вариант хелпа: http://www.thewayithink.co.uk/stylecop/sa1200.htm |
| Автор: KelTron 9.3.2010, 07:36 | ||||
Нет
Ну это типа правило хорошего тона, для каждого класса свой файл, причём название файла совпадает с именем класса. Хотя это не обязательно, называть файл можно как угодно, в один файл можно помещать много классов или один класс разбивать на несколько файлов.. |
| Автор: Gunslinger 9.3.2010, 19:52 |
| Ок. |
| Автор: Linus 13.3.2010, 09:07 | ||
| PashaPash, это значит, что на данный момент не юзаю StyleCop Из описания стало ясно, какие проблемы решает помещение юзингов вовнутрь нэймспейсов:
В первом случае, чтобы не напороться на одинаковые имена классов, нам всё равно приходится "предугадывать" такие ситуации и явно прописывать алиасы "using Guid=System.Guid". И, всё же, думаю это классный кейс "за" использование юзингов внутри namespaces. А второй кейс, думаю, бестолковый, напрочь убивается, если писать каждый класс в отдельных файлах. А минусы привел выше. |
| Автор: PashaPash 15.3.2010, 00:02 |
| Linus, основной минус - в стандартных студийных шаблонах юзинг написан вне неймспейса |