Si, pour une raison ou une autre, tu n'as pas la certitude que les règles d'alignement sont respectée, tu devras transformer tes deux entiers nommés respectivement x et y en un tableau de deux entiers (faisons simple: en int coordinate[2] ).
Si tu effectues ce changement (qui n'est qu'un changement d'implémentation, nous sommes bien d'accord
) mais que le code utilisateur avait la possibilité d'accéder directement à x et / ou à y, ce simple changement est de nature à casser tout le code utilisateur précédant ce changement.
Alors que, si tu as, dés le départ, encapsulé tes données et que tu n'y a donné accès qu'au travers d'accesseurs (qui, en plus, représentent un service que tu es en droit d'attendre), tu pourras sans problème remplacer tes deux int par un array de deux entiers et rajouter une fonction data() (par exemple) renvoyant un pointeur sur cet array sans que cela ne nuise en quoi que ce soit au code existant (outre le besoin de recompiler le code afin de respecter la nouvelle ABI )
Mais l'encapsulation, aussi futile puisse-t-elle paraître, ne fait jamais que renvoyer murphy et son corolaire fingale dans leur pénates
Partager