Envoyé par
Marco46
Si tu veux représenter une url valide tu te fais une classe ValidUrl. Tu pourrais très bien vouloir manipuler une url invalide pour x raisons. En proposant implicitement que l'url doit être valide tu masques le comportement réel de ton constructeur et tu fais des suppositions.
Heu.. là, tu joues sur les mots.. le type int représente un nombre entier, on ne l'a pas nommé validInt pour dire que c'est vraiment le cas..
Envoyé par
Marco46
Deuxième problème comment tu définis valide ? Sur quels critères ? Pour moi tout ça nécessite un mécanisme à part, séparé et explicite.
Maintenant, je m'entends sur la notion de "validité". Je veux dire ici que l'objet garantira que son contenu peut effectivement être considéré comme une URL, mais pas nécessairement que l'URL mènera effectivement à une ressource valide, etc..
Envoyé par
Marco46
C'est pas aussi clair que tu le prétends. Il y a beaucoup de développeurs qui recommandent de se limiter à l'assignation de valeurs. Le plus connu ça doit être
l'article de Misko Hevery (l'auteur initial d'AngularJS) mais il y en a beaucoup d'autres.
Je ne trouve pas que son article contredise mes propos. Pour moi le constructeur s'assure que l'objet qu'on lui demande de créer est valide. C'est une des bases de la POO, l'encapsulation. Par contre, il va de soi que si l'objet à des dépendances, ce n'est pas sa responsabilité de les construire et donc intervient l'injection (mais on s'écarte là…)
Partager