2013-09-30 4 views
1

Я изучаю VB и сделал «логин». Я искал Google для кусков и кусков и через свой учебник. Я просто хочу, чтобы вы, ребята, посмотрели и сказали мне, если это хороший код или нет ...VB.Net Login Box testing

Я протестировал его, и он работает. Поэтому я знаю, что он выглядит «профессиональным» или изворотливым?

Public Class mainLogin 
    Private Sub mainLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     ' selects the username box when form loads 
     txtUsername.Select() 
    End Sub 

    Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click 
     If txtUsername.Text = "" Then 
      MessageBox.Show("Username field is empty.") 
      txtUsername.Select() 
      Exit Sub 
     End If 

     If txtPassword.Text = "" Then 
      MessageBox.Show("Password field is empty.") 
      txtPassword.Select() 
      Exit Sub 
     End If 

     If txtPassword.Text.Length < 8 Then 
      MessageBox.Show("Password length must be more then 8 characters.") 
      txtPassword.Clear() 
      Exit Sub 
     End If 

     If txtUsername.Text = "PavleS" Then 
      If txtPassword.Text = "Password11" Then 
       MessageBox.Show("Success!") 

       ' Do something fancy here.. 
      Else 
       MessageBox.Show("Bad Password!") 
      End If 
     Else 
      MessageBox.Show("Bad Username!") 
     End If 
    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     ' clears username and password fields 
     txtPassword.Text = "" 
     txtUsername.Text = "" 
    End Sub 

    Private Sub txtPassword_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtPassword.KeyDown 
     If e.KeyCode = Keys.Enter Then 
      ' If Enter on the keyboard is pressed it will preform 
      ' the same action as clicking the login button 
      btnLogin.PerformClick() 
     End If 
    End Sub 
End Class 

ответ

1

Чтобы переписать то, что вы пытались сделать:
1. Используйте String.IsNullOrEmpty, чтобы проверить, если текстовое поле пустое
2. Используйте Focus() вместо Select()
3. Избегайте вызывающему событие от другого. Если 2 события должны сделать то же самое, переместите всю логику в приватном методе и вызовите метод из обоих событий. (в отношении вашего кода в txtPassword.KeyDown()).

Private Sub mainLogin_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown 

    ' selects the username box when form loads 
    txtUsername.Focus() 

End Sub 


Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click 


    If String.IsNullOrEmpty(txtUsername.Text) Then 
     MessageBox.Show("Username field is empty.") 
     txtUsername.Focus() 
     Exit Sub 
    End If 

    If String.IsNullOrEmpty(txtPassword.Text) Then 
     MessageBox.Show("Password field is empty.") 
     txtPassword.Focus() 
     Exit Sub 

    Else If txtPassword.Text.Length < 8 Then 
     MessageBox.Show("Password length must be more then 8 characters.") 
     txtPassword.Clear() 
     Exit Sub 
    End If 


    If txtUsername.Text = "PavleS" Then 

     If txtPassword.Text = "Password11" Then 
      MessageBox.Show("Success!") 

      ' 
      ' Do something fancy here.. 
      ' 
     Else 
      MessageBox.Show("Bad Password!") 
     End If 

    Else 
     MessageBox.Show("Bad Username!") 
    End If 

End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

    ' clears username and password fields 
    txtPassword.Clear() 
    txtUsername.Clear() 

End Sub 


Private Sub txtPassword_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) _ 
    Handles txtPassword.KeyDown 

    If e.KeyCode = Keys.Enter Then 

     ' 
     ' If Enter on the keyboard is pressed it will preform 
     ' the same action as clicking the login button 
     ' 
     PerformClick() 

    End If 

End Sub 

    Private Sub PerformClick() 
     '' Perform your logic here 
    End Sub 
+0

Спасибо за ответ, так что для 'PerformClick()' ваше высказывание, чтобы сохранить это как свою собственную «нажмите enter check», вместо того, чтобы хранить в этом txtPassword sub? –

+0

Да, избегайте вызова события в другом событии. Итак, поместите всю логику в метод «PerformClick», а затем вызовите ее в своих 'btnLogin_Click()' и 'txtPassword_KeyDown()' –

+0

Awesome! хаха спасибо!! –

0

Помимо стиля кодирования, как правило, вы не храните пароль в исходном коде в качестве открытого текста (decompliation покажет его). Общим подходом является хэш пароль заранее и сохранить хэш в исходном коде. Это значительно усложнит процесс перепрограммирования пароля.

Кроме того, вы не должны дать точную информацию о , что неправильно с учетными данными для входа, но, кроме того сказать

Прилагаемый имя пользователя/пароль не совпадают или аналогичный.

Для нескольких пользователей, вы должны использовать

Dictionary(Of String, String) 

и связанные с ними методы ,, вместо бесконечных если-предложений.

+0

Да, это имеет смысл, поэтому «keepem» угадывает, какой из них ошибочен LOL .... Я в конечном итоге собирался подключиться к базе данных с помощью SQL ... я думаю ... пока не знаю –