Дата публикации статьи: 30.12.2004 18:18

Гайдар Магдануров
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 New User()

    или

    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, а также о том, как эти изменения поддерживаются средой разработки. Надеюсь, что вы заметили, что "жить становиться легче и веселее".