Dans son article Prise en charge simple de la conception par contrat en C++ Pedro Guerreiro a déclaré :
Habituellement, une classe C++ se présente sous la forme de deux fichiers : le fichier d'en-tête et le fichier de définition. Où devrions-nous écrire les assertions : dans le fichier d'en-tête, parce que les assertions sont des spécifications ? Ou dans le fichier de définition, puisqu'elles sont exécutables ? Ou dans les deux, en courant le risque d'incohérence (et dupliquer le travail) ? Nous recommandons, au lieu de cela, que nous abandonnions le style traditionnel, et de supprimer le fichier le fichier de définition, en utilisant uniquement le fichier d'en-tête, comme si toutes les fonctions étaient définies en ligne, comme le font Java et Eiffel.
C'est un changement si drastique par rapport à la normalité du C++ qu'il risque de tuer l'entreprise dès le dès le départ. D'un autre côté, maintenir deux fichiers pour chaque classe est si gênant que tôt ou tard, un environnement de développement apparaîtra qui nous cachera cela, nous permettant de nous concentrer sur nos classes, sans sans avoir à se soucier de l'endroit où elles sont stockées.
C'était en 2001. J'ai accepté. Nous sommes maintenant en 2009 et il n'y a toujours pas d'environnement de développement qui nous cache cela, nous permettant de nous concentrer sur nos classes. Au lieu de cela, les longs temps de compilation sont la norme.
Heureusement, nous avons maintenant C#, où nous pouvons profiter de l'absence de fichiers d'en-tête... et de longs temps de compilation :)
Note : Le lien ci-dessus semble être mort maintenant. Il s'agit de la référence complète à la publication, telle qu'elle apparaît dans le site Web de la Commission européenne. Publications de l'auteur site web :
Pedro Guerreiro, Simple Support for Design by Contract in C++, TOOLS USA 2001, Proceedings, pages 24-34, IEEE, 2001.