J'utilise une méthode qui a la signature suivante:Vérifiez la valeur du paramètre de référence ou renvoyez bool?
public static bool TryAuthenticate(string userName, string password,
string domainName, out AuthenticationFailure authenticationFailure)
La méthode déclare: bool authenticated = false;
continue ensuite pour authentifier l'utilisateur.
Chaque fois que authenticated
est défini sur true ou false, authenticationFailure
est défini sur AuthenticationFailure.Failure
ou AuthenticationFailure.Success
de manière correspondante.
Donc, fondamentalement, je peux utiliser authenticationFailure ou la valeur de retour de la méthode pour vérifier le résultat. Cependant, il semble être une violation inutile de DRY d'avoir ces deux approches dans la même méthode.
Juste pour clarifier, authenticationFailure n'est utilisé nulle part ailleurs dans la méthode, donc il semble être totalement redondant.
En ce moment je fais ceci:
public static bool IsValidLDAPUser(string username, string password, string domain)
{
var authenticationStatus = new AuthenticationFailure();
if (ActiveDirectoryAuthenticationService.TryAuthenticate(username, password, domain, out authenticationStatus))
return true;
else return false;
}
Mais je pourrais le faire et obtenir un résultat similaire:
public static AuthenticationFailure IsValidLDAPUser(string username, string password, string domain)
{
var authenticationStatus = new AuthenticationFailure();
ActiveDirectoryAuthenticationService.TryAuthenticate(username, password, domain, out authenticationStatus)
return authenticationStatus;
}
- Pourquoi auriez-vous un paramètre de référence fait la même chose que la valeur de retour?
- Lequel devrais-je utiliser pour vérifier le résultat et cela fait-il une différence?
- Est-ce juste un cas de mauvais code ou ai-je manqué le point?
Merci d'avance!
Je pense que votre deuxième bloc de code peut contenir une erreur. Le type de retour ne devrait-il pas être 'bool' au lieu de' AuthenticationFailure' ou devrait-on changer les instructions de retour pour retourner 'authenticationStatus'? –