Les rues n'ont pas d'ID en France, mais c'est vrai, si tu veux savoir si c'est vraiment la même rue, il faudrait prendre l’adresse en paramètre :
Ensuite, au niveau métier, il n'y a qu'un cas ou on veut comparer deux adresses : savoir si c'est la même. Que bob et jean habitent dans la même rue ou dans la même ville c'est pareil. Et si tu bosses sur du réseau (assainissement, eau potable, électricité, éclairage, ...) dans une rue, les recherches se font par parcours de graphe ou par secteurs.
Quand tu vois la gueule des données des communes ou conseils généraux de toute façon, on est loin de telles préoccupations).
Mais du coup dans l'absolu en PHP, Adresse devrait juste avoir numéro, (alt: bis, ter, ...), type de rue, code postal et Rue.
Rue devrait avoir Ville.
Ville devrait avoir Département
etc.
Bon, ensuite c'est un exemple son gist, ça sert à rien de vouloir en faire un AdressFactoryFactoryFactory. Il est clair que dans ce cas d'utilisation c'est Nom de Rue dont il est question. D'ailleurs, une rue ne sert que pour les adresses. Le reste est géré par d'autres entités.
Code :
def meme_rue?(%Adresse{rue: r1, ville: v1}, %Adresse{rue: r2, ville: v2}) do
meme_rue?(r1,r2) and meme_ville?(v1,v2)
end
Ensuite, au niveau métier, il n'y a qu'un cas ou on veut comparer deux adresses : savoir si c'est la même. Que bob et jean habitent dans la même rue ou dans la même ville c'est pareil. Et si tu bosses sur du réseau (assainissement, eau potable, électricité, éclairage, ...) dans une rue, les recherches se font par parcours de graphe ou par secteurs.
Quand tu vois la gueule des données des communes ou conseils généraux de toute façon, on est loin de telles préoccupations).
Mais du coup dans l'absolu en PHP, Adresse devrait juste avoir numéro, (alt: bis, ter, ...), type de rue, code postal et Rue.
Rue devrait avoir Ville.
Ville devrait avoir Département
etc.
Bon, ensuite c'est un exemple son gist, ça sert à rien de vouloir en faire un AdressFactoryFactoryFactory. Il est clair que dans ce cas d'utilisation c'est Nom de Rue dont il est question. D'ailleurs, une rue ne sert que pour les adresses. Le reste est géré par d'autres entités.