03-08-2013, 06:50 PM
Xenos, ce qui te gène, ce sont les effets de bord. La POO ne spécifie pas qu'elle ne doit pas en avoir, même s'il est évident qu'ajouter plus d'effets de bord (en l’occurrence plus de références) dans un programme le rend plus compliqué, moins lisible.
Ils sont généralement acceptés et sont très utile si utilisé à bon escient. Pour palier aux inconvénients des références, on a inventé pas mal de principe pour limiter les risques. En C++, on a les pointeurs intelligents, le RAII, ou encore des systèmes de verrou.
Un bon principe (je ne connais pas son nom) est qu'un objet ne devrait avoir qu'un seul propriétaire.
Garder cette notion en tête permet de limiter les effets de bord, mais ne les interdit pas. En l’occurrence, la bibliothèque autorise l'utilisateur à modifier le livre, uniquement dans la fonction de callback. Le code utilisateur a accès au livre, mais n'en est pas "propriétaire". Il n'as donc pas à supprimer le livre, ni a en garder une référence.
Si tu veut absolument éviter les effets de bord, tu devrait te tourner du coté des langages fonctionnelles.
Ils sont généralement acceptés et sont très utile si utilisé à bon escient. Pour palier aux inconvénients des références, on a inventé pas mal de principe pour limiter les risques. En C++, on a les pointeurs intelligents, le RAII, ou encore des systèmes de verrou.
Un bon principe (je ne connais pas son nom) est qu'un objet ne devrait avoir qu'un seul propriétaire.
Garder cette notion en tête permet de limiter les effets de bord, mais ne les interdit pas. En l’occurrence, la bibliothèque autorise l'utilisateur à modifier le livre, uniquement dans la fonction de callback. Le code utilisateur a accès au livre, mais n'en est pas "propriétaire". Il n'as donc pas à supprimer le livre, ni a en garder une référence.
Si tu veut absolument éviter les effets de bord, tu devrait te tourner du coté des langages fonctionnelles.