10-01-2011, 07:38 PM
(Modification du message : 10-01-2011, 07:39 PM par Sephi-Chan.)
(10-01-2011, 07:11 PM)Viciousity a écrit : Bah moi j'essaie de bien mettre en page les commentaires et de mettre une logique dans son organisation
# CURENT USER: Method to retrieve data for user.
# ==============================================
public
# Verify if user has correct password
def has_pass?(sub_password)
return true if encrypt(sub_password) == self.password_hash
end
private
# Hash a string with SHA-256.
def encrypt(string)
return Digest::SHA1.hexdigest(string)
end
Je pense que ce ne sont pas de bonnes méthodes. Je m'explique (tout ça n'est donc que mon avis).
Pour commencer, tu ne tires pas profit des idiomes de ton langage de programmation.
En Ruby, le return est optionnel. Tu retournes un booléen alors que l'opérateur de comparaison le fait pour toi, d'autant que si la condition n'est pas vraie, ta méthode va renvoyer false, ce qui est illogique.
Ensuite, tu nommes mal tes méthodes et leurs arguments.
Pourquoi has_pass? ? Ce nom laisse penser que la méthode renvoie true si l'utilisateur a un mot de passe et false dans le cas contraire. Ça ne colle pas avec le commentaire. Un meilleur nom pourrait être correct_password? ou password_matches?.
Pourquoi sub_password ? Une portion de mot de passe (comme dans substring) ? L'abréviation de submitted ? Pourquoi pas submitted_password ou juste password ?
Ensuite, tu commentes trop. Ces méthodes son documentées par leur nom.
Voilà comment je réécrirais ce code :
public
def password_matches?(password)
password_hash == encrypt(password)
end
private
def encrypt(string)
Digest::SHA1.hexdigest(string)
end
Voilà ! Qu'en penses-tu ? L'indentation après public ou private n'importe pas.
Sephi-Chan