Ruby embrasse la métaprogrammation (réflexion, introspection), la programmation multi-paradigmes et le dynamisme à un niveau inhabituel. Il est facile de se tirer une balle dans le pied avec puissance et flexibilité.
Gênant? Ruby a la capacité d'être extrêmement lisible ou insondable. J'ai vu du code qui semble appartenir à un script Bash.
Mauvaises pratiques? Certains rubis valorisent l'intelligence à la sagesse. Ils écrivent et partagent des astuces qui montrent leur intelligence, mais cela crée un code illisible et fragile.
En passant: Javascript a été un désastre de par sa conception, et le livre "The Good Parts" essaie d'extraire sa beauté cachée. Perl, un langage qui a popularisé "Il y a plus d'une façon de le faire" (c'est-à-dire la flexibilité), a un livre similaire dans "Perl, Best Practices". L'histoire de Perl est celle de l'expérimentation et de l'expérience durement gagnée, "Best Practices" représente son savoir. Perl 6 sera, je pense qu'il est juste de dire, un redémarrage du langage basé sur cette connaissance et plus encore. Ruby peut souffrir de problèmes similaires.
@James et boucles for ... Quand vous faites une boucle for en rubis, il appelle alors ".each". Par conséquent, "for" est du sucre syntaxique pour les personnes plus à l'aise avec les boucles de style C. Mais en tant que Rubyist, vous allez toujours utiliser des itérateurs comme .map, .inject, .each_with_object. Vous n'aurez jamais à écrire une boucle for avec quelque chose comme "i = 0; i> 6; i ++" en rubis, et donc vous finissez par abandonner l'habitude. @andrew ... rubis éloquent n'approuve pas les boucles.