jeudi, mars 06, 2008

Améliorer la lisibilité avec Array.collect

Je n'ai pas l'habitude (venant du monde java) d'utiliser les méthodes collect, reject, select de Array.
Voilà un cas d'utilisation où j'ai nettement vu l'amélioration de lisibilité du code.
Imaginez qu'on veut afficher la liste des noms de users séparés par un espace.
Avant:

names = ""
for user in users
    names << "#{user.user_username} "
end
return names.chomp

Après:

names = users.collect { |user| user.user_username}
return names.join(' ')

C'est tout simple mais quand on pas l'habitude; on y pense pas forcément ;)
Je découvre avec un peu de retard l'utilité de "collect()" mais mieux vaut tard que jamais :D
Technorati tags:

2 commentaires:

Unknown a dit…

Rhalala, les collect et autres map, c'est vraiment ce qui me manque en Java par rapport au ruby.
Ca permet un code ultra-comapct, c'est la meilleure utilisation possible des blocs de code, bref, c'est le pied.

Sobe a dit…

Désolé, je suis un peu en retard...

J'ai voulu voir laquelle de ces 2 versions était la plus "performante" (c'est obsessionnel faut croire...).

Ben voilà : collect, c'est un peu mieux :

http://sobe-session.blogspot.com/2008/03/benchmark-sur-collect.html