Je me demande si on devrait valider que les arguments passés à une méthode sont d'une certaine classe.
par exemple par exemple. p> est-il intelligent de le faire ou est Il suffit de jouer et de perdre du temps pour valider tous les arguments passés? P> Existe-t-il des circonstances lorsque vous souhaitez avoir cette sécurité supplémentaire et que vous ne vous dérangerez pas? P> Partager vos expériences! p> p>
5 Réponses :
Je pense que c'est inutile. J'ai une fois lu sur un blog quelque chose comme "Si vous avez besoin de protéger votre code de personnes stupides, Ruby n'est pas la langue pour vous." P>
c'est vrai. Pourquoi valider vos programmeurs =)
L'implication que Ruby nécessite des développeurs très intelligents ou que vous ne devez pas utiliser de rubis pour des programmes nécessitant une exactitude? Je ne trouve pas cette réponse particulièrement utile.
Je ne recommanderais pas cette approche spécifique, car vous ne parveniez pas à accueillir des classes qui fournissent une sémantique de hachage ou de tableau, mais ne sont pas cette classe. Si vous avez besoin de ce type de validation, vous ferez mieux d'utiliser OpenStruct a une sémantique de sémantique Hash and Attribut-Accessor, mais ne retournera pas vrai pour la condition Pour le mettre en perspective, même dans une langue non dynamique que vous ne voudriez pas le faire de cette façon; Vous préférez vérifier qu'un objet implémente réponse_to? Code> avec un nom de méthode. Les tableaux mettent en œuvre la méthode: [], pour ce que ça vaut. P>
hash.class == hachage code>. Cela fonctionnera comme un hasch dans la pratique, cependant. P>
ITHINITION
Si vous souhaitez des contrats de code compilateur / exécutoire, puis Ruby n'est pas pour vous. Si vous voulez une langue malléable et une testabilité facile, alors ruby est. P>
Il n'est généralement pas nécessaire de valider que les arguments sont d'une certaine classe. Dans Ruby, vous êtes encouragé à utiliser dactylographie de canard . P>
J'ai constaté que valider que les paramètres d'entrée répondent à vos conditions préalables est une pratique très précieuse. La personne stupide que sa vous sauve de vous est. Cela est particulièrement vrai pour RUBY car il n'a pas de chèque de temps de compilation. S'il y a certaines caractéristiques de l'entrée de votre méthode que vous savez, il est vrai que SENES doit les vérifier au moment de l'exécution et soulever des erreurs avec des messages d'erreur significatifs. Sinon, le code commence simplement à produire des ordures pour les ordures et vous obtenez une mauvaise réponse ou une exception sur la ligne. P>