Histoire sans paroles et code sans commentaires

L'URL courte de cet article est : http://inagua.ch/pFWcQ

Quelques grammes de ruby et de rspec dans ce monde de java et maven ;-)

J’ai dû récemment récupérer un bout de code pour calculer la distance entre deux positions.
J’aimerais m’assurer que ça fonctionne comme prévu avec quelques exemples.
Quelque chose comme ça :
[sourcecode language="ruby"]
it “computes distance a meter near” do
bdf = Position.new(46.200015, 6.148236)
cdc = Position.new(43.657556, 7.166362)
bdf.distance(cdc).should be_close(293.843, 0.001)
end
[/sourcecode]

Et là, le 0.001 me chiffonne.
Idem pour le nom de la méthode. Doit-on renommer en distance_km ? Pas très “parlant” tout ça …
(Une année de lecture de notre blog offerte à qui trouvera quels lieux se cachent derrière bdf et cdc.)

Avouez qu’on préfèrerait lire
[sourcecode language="ruby"]
bdf.distance(cdc).should be_close(293.843.km, 1.meter)

[/sourcecode]

Ruby est le meilleur ami du développeur qui s’interdit les commentaires dans son code. Il vous suffit de réouvrir la class Numeric comme suit :

[sourcecode language="ruby"]
class Numeric

def km
self
end

def m
self / 1000.0
end

def cm
m / 100.0
end

alias :meter :m
alias :centimeter :cm
alias :kilometer :km

end
[/sourcecode]

et le tour est joué.
Si vous n’êtes pas encore passé à rspec, cette aide à la manipulation des distances reste disponible dans vos tests unitaires :
[sourcecode language="ruby"]
def test_compute_distance
bdf = Position.new(46.200015, 6.148236)
cdc = Position.new(43.657556, 7.166362)

assert_in_delta 293.843.kilometer, bdf.distance(cdc), 1.meter
end
[/sourcecode]

Références :
http://rspec.info/
http://pragprog.com/titles/achbd/the-rspec-book

Les commentaires, les vôtres !, sont les bienvenus sur notre blog.

L'URL courte de cet article est : http://inagua.ch/pFWcQ

3 réflexions au sujet de « Histoire sans paroles et code sans commentaires »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>