Самая необычная конструкция в C#, по моему мнению, это деректива #region. Удивительно в ней то, что введена она в язык исключительно ради более удобной работы с исходным кодом. Компилятор, говоря языком стандарта, не налагает никакой семантики на "содержимое" региона.
Служат регионы для возможности отделения блока кода внутри региона от остального кода по-соседству.
Используютя регионы, зачастую, именно так, как показано в примере из MSDN:
#region MyClass definition
public class MyClass
{
public static void Main()
{
}
}
#endregion
то есть начинаются как:
а заканчиваются:
чему во многом этому способствует "стандартный" сниппет (находящийся в "Program Files\Microsoft Visual Studio 9.0\VC#\Snippets\1033\Visual C#\pp_region.snippet"), позволяющий в несколько нажатий клавиш вставить в редактор блок #region … #endregion и ввести лишь "заголовок".
Директива #endregion, кажется, нужна лишь для того, что бы обозначить окончание региона и больше проку от неё нет. Но … это только на первый взгляд :о) она так же, как и #region может содержать информативное текстовое описание, а, значит, подсказывать, что же за код находится выше неё в редакторе и, часто, это очень полезно если "размер" региона больше одного экрана или просто не хочется высоко поднимать глаза, что бы увидеть, что же написано в заголовке региона. Главное, получить это можно практически бесплатно, если для вставки регионов вы пользуетесь code-snippets. Достаточно открыть в редакторе (хоть в той же MSVS) указанный выше файл pp_region.snippet и заменить
<![CDATA[#region $name$
$selected$$end$
#endregion
]]>
</Code>
на
<![CDATA[#region $name$
$selected$$end$
#endregion $name$
]]>
</Code>
Теперь у вас будут более информативные и даже более стройные регионы:
#region MyClass definition
public class MyClass
{
public static void Main()
{
}
}
#endregion MyClass definition
Не забывайте: человек может читать или просто просматривать код не только "сверху вниз", но и "снизу вверх", и в таком случае указанный у #endregion коментарий послужит на пользу.
Спасибо!
ОтветитьУдалитьЕще записи будут? :)
Буду стараться. Тем "в голове" много, некоторым (как эта) уже несколько лет :о)
ОтветитьУдалитьДело за наличием свободного времени, настроением и читателями. С первыми двумя пунктами, тьфу-тьфу-тьфу, наметились сдвиги :о)
Я Ваш блог добавил в Google Reader, так что буду постоянным читателем. :)
ОтветитьУдалитьСпасибо, постараюсь оправдать оказанное…
ОтветитьУдалитьТоже жду продолжения. Подписался на РСС.
ОтветитьУдалитьНемного флейма. Столкнулся с проблемкой. Есть стандартные snippets, а именно папка Refactoring, но пользоватся ими не получается.. как сделать так чтоб они были доступны в VS?
ОтветитьУдалить2 nauro: А как бы ты хотел пользоваться теми сниппетами? Они вызываются при выполнении команд рефакторинга. Если поломалось, то см. How to: Restore C# Refactoring Snippets.
ОтветитьУдалить"Почему, когда я использую #region в коде у меня такое ощущение, что я вместо того чтобы убрать в комнате бардак, тупо прикрываю его одеялом и делаю вид что так и надо..." Отсюда.
ОтветитьУдалить2div: ну и что?
ОтветитьУдалитьИнтересно, не знал, меня тоже напрягало что по #endregion не понятно какой регион выше идет.
ОтветитьУдалитьС другой стороны человек может листать код и директиву с описанием относить к коду ниже, не обращая внимание на то, endregion это или region. В таком случае такое двойное описание будет сбивать :)
ОтветитьУдалить