É uma boa prática chamar um método que retorne valores verdadeiros ou falsos em uma instrução if?
Algo assim:
private void VerifyAccount()
{
if (!ValidateCredentials(txtUser.Text, txtPassword.Text))
{
MessageBox.Show("Invalid user name or password");
}
}
private bool ValidateCredentials(string userName, string password)
{
string existingPassword = GetUserPassword(userName);
if (existingPassword == null)
return false;
var hasher = new Hasher { SaltSize = 16 };
bool passwordsMatch = hasher.CompareStringToHash(password, existingPassword);
return passwordsMatch;
}
ou é melhor armazená-los em uma variável e compará-los usando se mais valores como este
bool validate = ValidateCredentials(txtUser.Text, txtPassword.Text);
if(validate == false){
//Do something
}
Não estou me referindo apenas ao .NET, estou me referindo à pergunta em todas as linguagens de programação. Acontece que usei o .NET como exemplo
IsValidCredentials
, embora gramaticalmente estranho, é um formato comum para indicar um valor de retorno booleano.
!
é o operador "NOT", ele nega qualquer expressão booleana. Então if (!validate)
é o oposto de if (validate)
. A instrução if será inserida se validate
não for verdadeira.
if (!validate)
vez deif (validate == false)
.