Одно время я очень фанател от CodeRush. Он позволял в два-три нажатия клавиши создать свойство у объекта или составить тело цикла. Набирать код институтских лабораторных было одно удовольствие.
Потом вышла 2008 студия с C# 3.0 и там были автоматические свойства. Мне все больше не нравилось, когда CodeRush делал не то, что я хотел. Короткие шоткаты этому способствуют. И в один прекрасный момент я отказался от его использования. У меня больше времени тратилось на борьбу с инструментом, чем если бы я набирал код собственоручно.
Потом я узнал о сниппетах студии. По сути это те же шаблоны кода из CodeRush, только более простые. Есть стандартные вроде for, foreach, prop и exception. Чтобы их раскрыть нужно написать имя шаблона и нажать TAB. Если пользоваться автокомплитом, то можно написать часть имени шаблона, а потом TAB, TAB.
Но самая прелесть в том, что можно писать свои шаблоны. Вручную, правда, этого лучше не делать. Шаблон хранится в XML и редактировать его вручную тяжко.
Однако есть дополнение к студии, позволяющее создавать и редактировать шаблоны —
http://www.codeplex.com/SnippetDesigner. Редактирование выглядит следующим образом:
Все подставляемые поля подсвечиваются, настройки вынесены в свойства документа, а также в таблицу параметров. Отсутствует подсветка синтаксиса, но это все равно на порядок лучше, чем редактировать XML.
Чтобы подсоединить новый сниппет к студии, нужно его создать. Делается это либо через контекстное меню (для выделенного кода), либо копированием существующего файла сниппета. Где лежат шаблоны можно посмотреть в Tools\Code Snippets Manager. Пользовательские шаблоны лежат по умолчанию в \Documents\Visual Studio 2008\Code Snippets\. Если создавать шаблон через копирование файла, то нужно у него поменять Shortcut свойство в XML. То ли студия, то ли SnippetDesigner кеширует сниппеты и при сохранении сниппета с тем же шоткатом можно потерять изменения.
Примеры пользовательских сниппетов, которые я написал работая с недавним WPF проектом я привел чуть ниже. Эти шаблоны сэкономили мне несколько часов рутинной наборной работы и отладки.
Потом вышла 2008 студия с C# 3.0 и там были автоматические свойства. Мне все больше не нравилось, когда CodeRush делал не то, что я хотел. Короткие шоткаты этому способствуют. И в один прекрасный момент я отказался от его использования. У меня больше времени тратилось на борьбу с инструментом, чем если бы я набирал код собственоручно.
Потом я узнал о сниппетах студии. По сути это те же шаблоны кода из CodeRush, только более простые. Есть стандартные вроде for, foreach, prop и exception. Чтобы их раскрыть нужно написать имя шаблона и нажать TAB. Если пользоваться автокомплитом, то можно написать часть имени шаблона, а потом TAB, TAB.
Но самая прелесть в том, что можно писать свои шаблоны. Вручную, правда, этого лучше не делать. Шаблон хранится в XML и редактировать его вручную тяжко.
Однако есть дополнение к студии, позволяющее создавать и редактировать шаблоны —
http://www.codeplex.com/SnippetDesigner. Редактирование выглядит следующим образом:
Все подставляемые поля подсвечиваются, настройки вынесены в свойства документа, а также в таблицу параметров. Отсутствует подсветка синтаксиса, но это все равно на порядок лучше, чем редактировать XML.
Чтобы подсоединить новый сниппет к студии, нужно его создать. Делается это либо через контекстное меню (для выделенного кода), либо копированием существующего файла сниппета. Где лежат шаблоны можно посмотреть в Tools\Code Snippets Manager. Пользовательские шаблоны лежат по умолчанию в \Documents\Visual Studio 2008\Code Snippets\. Если создавать шаблон через копирование файла, то нужно у него поменять Shortcut свойство в XML. То ли студия, то ли SnippetDesigner кеширует сниппеты и при сохранении сниппета с тем же шоткатом можно потерять изменения.
Примеры пользовательских сниппетов, которые я написал работая с недавним WPF проектом я привел чуть ниже. Эти шаблоны сэкономили мне несколько часов рутинной наборной работы и отладки.
Свойство с уведомлением:
/// <summary>
/// $comment$
/// </summary>
/// <remarks>
/// Уведомление об изменении
/// </remarks>
private $type$ m_$property$;
/// <summary>
/// $comment$
/// </summary>
public $type$ $property$
{
get
{
return m_$property$;
}
set
{
m_$property$ = value;
OnPropertyChanged( "$property$" );
}
}
Свойство с ленивой инициализацией:
/// <summary>
/// $comment$
/// </summary>
/// <remarks>
/// Ленивая инициализация
/// </remarks>
private $type$ m_$property$;
/// <summary>
/// $comment$
/// </summary>
public $type$ $property$
{
get
{
if( m_$property$ == null )
{
m_$property$ = null;
}
return m_$property$;
}
}
MS Prism команда:
#region Command - $name$
/// <summary>
/// Команда $comment$
/// </summary>
public DelegateCommand<$type$> $name$Command { get; private set; }
/// <summary>
/// Обработчик команды $comment$
/// </summary>
private void $name$( $type$ parameter )
{
// TODO: Инициализировать команду в конструкторе
// $name$Command = new DelegateCommand<$type$>( $name$, Can$name$ );
// TODO: Добавить по необходимости Shortcuts, ReturnKeyAssistants
}
/// <summary>
/// Критерий выполнимости для команды $comment$
/// </summary>
/// <returns>true если команде разрешено выполняться</returns>
private bool Can$name$( $type$ parameter )
{
// TODO: Добавить обработчики ошибок для входных данных
//return Errors.Count == 0;
return true;
}
#endregion