Гайдар Магдануров
Microsoft Visual Studio 2005
Часть 2. Новое в IDE Visual Basic .NET
В этой статье, второй в цикле посвященных новой версии среды разработки Microsoft Visual Studio 2005, рассказывается о новых функциях IDE относящихся к языку Visual Basic .NET. Данная функциональность уже реализована в первой бета-версии среды разработки и будет присутствовать в том же объеме (если, конечно, в светлые головы парней из Редмонда не придет еще какая-нибудь хорошая идея) в финальной версии Visual Studio 2005, выпуск которой планируется на лето 2005 года.
Обычно, создание нового проекта начинается с запуска IDE и выбора соответствующего типа проекта из меню File| New Project (горячие клавиши Ctrl+N). В отличие от предыдущих версий IDE Visual Studio при создании нового проекта не потребует указания пути для сохранения файлов проекта.
Выбрать место для сохранения вновь созданного проекта вам предложат после первой же попытки сохранить проект выбором соответствующей пиктограммы или пункта меню (горячие клавиши Ctrl+S).
Здесь же вы можете определить будет ли исходный код контролироваться системой контроля версий исходного кода SourceSafe.
Среда Visual Studio ориентирована на быструю разработку качественных, надежных и производительных приложений с наименьшими затратами времени и сил. Поскольку наибольшей трудностью, с которой встречаются программисты, являются ранее сделанные ошибки снижающие производительность, либо ведущие к неверным результатам выполнения, то важной задачей является отслеживание и исправление таких ошибок в момент написания кода.
При всем при этом, Visual Studio не будет вмешиваться в процесс написания исходного кода, а будет лишь деликатно напоминать о ваших возможных недочетах, ошибках и опечатках, выделяя "плохие" участки кода таким же образом, как Microsoft Word выделяет орфографические ошибки. Если навести не подчеркнутое слово курсор, вы увидите описание ошибки, которую Visual Studio усмотрела в вашем коде. Конечно, ничто не мешает вам игнорировать эти предупреждения, приобретая дополнительные проблемы с вашим кодом в будущем, но если уж вам так искренне хотят помочь, может быть не стоит отказываться?
Данный механизм был введен еще в самых первых версиях Visual Studio, в версии 2005 были добавлены новые виды предупреждений, относящиеся к частым ошибкам в VB коде. Примеры и описания приведены ниже. "Проблемные" строки выделены курсивом.
Function GenerateGreetings() ' не указан тип возвращаемого значения, по умолчанию тип Object
End Function ' Функция не возвращает значения, поскольку нет вызова функции Return
' при использовании значения может возникнуть ошибка
Студия также предупредит вас, если не указан тип передаваемого в функцию параметра. Исправим функцию.
Private Function GenerateGreeting(ByVal Name As String) As String
Select Case Now.Hour
Case 8 To 12
Return "Доброе утро, " + Name + "!"
Case 13 To 18
Return "Добрый день, " + Name + "!"
Case 19 To 22
Return "Добрый вечер, " + Name + "!"
End Select
End Function ' функция все еще может не возвращать значения
Как вы можете убедится, функция GenerateGreeting может не вернуть значения, если текущее время будет между 22 и 8 часами, поэтому Visual Studio все равно выводит предупреждение. Что ж, напишем наконец-таки функцию правильно.
Private Function GenerateGreeting(ByVal Name As String) As String
Select Case Now.Hour
Case 8 To 12
Return "Доброе утро, " + Name + "!"
Case 13 To 18
Return "Добрый день, " + Name + "!"
Case 19 To 23
Return "Добрый вечер, " + Name + "!"
Case Else
Return "Доброй ночи, " + Name + "!"
End Select
End Function
Объявим некоторый класс.
Public Class User
Public Name As String
Public Mail As String
End Class
Теперь создадим еще один класс, функцию и некоторую переменную, которой будет присвоен объект этого класса.
Public Class FormClass
Public Sub SetUserInfo()
Dim myUser As User ' Переменная myUser не используется
End Sub
End Class
Такое предупреждение кажется смешным в этом примере, но в настоящих приложениях весьма часта ситуация, когда объявлено множество переменных, некоторые из которых совсем не используются, но разработчики забывают об этом. А лишние переменные - лишние машинные ресурсы, как бы смешно это не звучало при современном уровне развития вычислительной техники. Поэтому, продолжим написание примера.
Public Sub SetUserInfo(ByVal Name As String, ByVal Mail As String)
Dim myUser As User
myUser.Name = Name ' переменная используется до инициализации
myUser.Mail = Mail
End Sub
Действительно, мы объявили переменную типа User, но не присвоили ей какого-либо значения. Стоит отметить, что очень часто начинающие программисты, причем не только на Visual Basic не могут понять разницы между переменной какого-то типа и значением этой переменной. Но с этим вопросам мне остается только отослать к соответствующей литературе. Здесь же замечу лишь, что в настоящем примере переменная myUser не содержит значения, а значит подобное присвоение значения несуществующему свойству (все-таки свойство Name есть у объекта User, а не у "пустой" переменной myUser). Как знают программисты, работавшие с Visual Basic, существует два пути "наполнения жизни переменной смыслом".
или
Dim myUser As User
myUser = New User()
Долгожданная возможность автоматизировать комментирование кода, а также использовать комментарии к собственным функциям, классам и свойствам также, как и комментарии к кассам, функциям и свойствам Framework. Вернемся к функции, которую мы писали выше GenerateGreetings. Для того, чтобы создать комментарии в формате понятном Visual Studio достаточно перейти с названия функции на строку выше и ввести подряд три знака комментария '''. И Visual Studio автоматически создаст заготовку для описания функции или свойства.
''' <summary>
'''
''' </summary>
''' <param name="Name"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function GenerateGreeting(ByVal Name As String) As String
Select Case Now.Hour
Case 8 To 12
Return "Доброе утро, " + Name + "!"
Case 13 To 18
Return "Добрый день, " + Name + "!"
Case 19 To 23
Return "Добрый вечер, " + Name + "!"
Case Else
Return "Доброй ночи, " + Name + "!"
End Select
End Function
Обратите внимание, что для перемещения между значащими полями полями (позициями между тегами) достаточно нажать клавишу Tab. Введем описание для нашего метода, после чего, немного поразмыслив изменим сигнатуру функции. К сожалению, Visual Studio никак не отреагирует на изменение числа параметров функции, но и эта проблема решаема, достаточно перейти на строчку <param ..., вставить новую строку и ввести открывающую угловую скобку < и Visual Studio услужливо предоставит нам подсказку (IntelliSense).
Как видите, комментировать методы, а также свойства (все выше и нижесказанное в этой части статьи справедливо и для свойств) совсем просто. Что ж, опишем нашу функцию.
''' <summary>
''' Функция создает строку приветствия для отображения пользователю
''' </summary>
''' <param name="Name">Имя пользователя</param>
''' <param name="Hour">Текущее время в часах</param>
''' <returns>Возвращает строку приветствия в зависимости от времени</returns>
''' <remarks>Для приложений требующих локализации необходимо испольхзовать метод,
''' позволяющий выводить приветствие в зависимости от языка пользователя</remarks>
А теперь самое "вкусное", для чего все это делалось. Пусть по щелчку по кнопке на форме необходимо выводить приветствие пользователю, напишем соответствующий код. При этом насладимся плодами трудов по комментированию кода. Прежде всего - описанием метода.
И описанием параметров этого метода.
Читатели, пользовавшиеся Microsoft Office будут приятно удивлены тем, что весьма полезная функция из Office перекочевала и в Visual Studio. Продемонстрируем это следующем на примере. Для примера создадим некоторый класс содержащий локальную переменную и соответствующее ей свойство.
Public Class User
Private userName As String
Public Sub New(ByVal Name As String)
userName = Name
End Sub
Public Property Name() As String
Get
Return userName
End Get
Set(ByVal value As String)
userName = value
End Set
End Property
End Class
Допустим, что по некоторым соображениям мы решаем сделать свойство Name класса User доступным только для чтения. Соответственно нашему желанию мы удаляем блок Set. Что же в ответ на это предлагает Visual Studio? Метко попав мышью на небольшой значок, появившийся под названием свойства сразу после удаления блока Set, мы увидим такую картинку.
"Имеющий глаза да увидит", что Visual Studio предлагает либо вернуть обратно блок Set, либо добавить в сигнатуру свойства ReadOnly, что мы и выберем, чтобы в результате получить свойство только для чтения.
Public ReadOnly Property Name() As String
Get
Return userName
End Get
End Property
Еще одна весьма полезная возможность в Visual Studio 2005 - автоматическое переименование функций, свойств и переменных. Не пугайтесь, Visual Studio не будет переиначивать ваш код, а лишь поможет вам выполнить переименование в случае такой необходимости. Вернемся к нашему предыдущему примеру с функцией GenerateGreetings. Допустим, что такое название больше не услаждает наш слух, не радует глаз и вообще в спецификации написано, что метод должен называться иначе! Поэтому мы переименуем функцию, на что сразу же получим предложение от Visual Studio переименовать функцию во всех местах где она была вызвана.
Таким образом, если мы изменим имя свойства, функции или переменной, то выполним это без труда - с помощью Visual Studio, которая и быстро заменит все вхождения исходного названия на новое во всех фалах проекта. Единственная проблема может возникнуть с именами переменных и комментариями, поскольку текст тэгов <param></param> автоматически не обновляется.
В статье я рассказал о наиболее приятных и полезных новых функциях IDE Microsoft Visual Studio 2005. В следующих статья цикла я расскажу о изменениях в самом языке Visual Basic, а также о том, как эти изменения поддерживаются средой разработки. Надеюсь, что вы заметили, что "жить становиться легче и веселее".