VB. Net Сравнение кода - какой из них лучше и почему? - PullRequest
1 голос
/ 17 апреля 2020

это мой первый пост. Не могли бы вы дать мне несколько советов, какой код лучше и почему? В основном эти два кода делают то же самое, но с использованием других методов. Приветствия

ПЕРВЫЙ КОД

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Age.Click
    Dim age As Integer
    Dim boxinput As String

    boxinput = InputBox("Please input your age", "Age input", "28")

    Try
        age = boxinput


    Catch ex As Exception
        If boxinput = "" Then
            MessageBox.Show("You clicked cancel!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Exit Sub
        Else
            MessageBox.Show("Correct your age!" & Environment.NewLine & "Input number only!")
        End If

    End Try

End Sub

ВТОРОЙ КОД

Private Sub Age2_Click(sender As Object, e As EventArgs) Handles Age2.Click
    Dim age As Integer
    Dim boxinput As String

    boxinput = InputBox("Please input your age", "Age input", "28")

    If boxinput = "" Then
        MessageBox.Show("You clicked cancel!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
    ElseIf IsNumeric(boxinput) Then
        age = CInt(boxinput)
    Else
        MessageBox.Show("Correct your age!" & Environment.NewLine & "Input number only!")
    End If

End Sub

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Существует также Integer.TryParse (и, если используются другие цифры, для них также есть TryParse). Кроме того, как указано в комментариях, вы всегда должны использовать значимые имена для элементов управления, и то же самое относится и к именам форм.

Имя формы должно отражать, для чего предназначена форма, и аналогично имя кнопки должно отражать действие, например, btnGetPersonAgeButton , GetPersonAgeButton et c.

Рассмотрим следующее

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim age As Integer
        Dim boxinput As String

        boxinput = InputBox("Please input your age", "Age input", "28")

        If Integer.TryParse(boxinput, age) Then
            MessageBox.Show($"Age is {age}")
        Else
            MessageBox.Show($"'{boxinput}' must be a number")
        End If
    End Sub
End Class
1 голос
/ 17 апреля 2020

Второй вариант предпочтительнее.

Объяснение скопировано с здесь :

Бросать исключения дорого. Не используйте исключения для управления потоком приложений. Если вы можете разумно ожидать, что последовательность событий произойдет в ходе нормального выполнения кода, вам, вероятно, не следует выдавать какие-либо исключения в этом сценарии.

...