Peut-être que demander si c'est faisable et raisonnable ne sont pas les questions les plus utiles à poser. La réponse la plus pratique est probablement celle qui est acceptée. J'analyserai cela à un niveau plus philosophique.
Une couverture à 100% serait idéale, mais idéalement, elle ne serait pas nécessaire ou serait beaucoup plus facile à réaliser. Je préfère penser si c'est naturel et humain que faisable ou raisonnable.
L'acte de programmer correctement est presque impossible avec les outils d'aujourd'hui. Il est très difficile d'écrire du code totalement correct et sans bogues. Ce n'est tout simplement pas naturel. Donc, sans autre option évidente, nous nous tournons vers des techniques telles que TDD et le suivi de la couverture du code. Mais tant que le résultat final est toujours un processus contre nature, vous aurez du mal à amener les gens à le faire de manière cohérente et heureuse.
Atteindre une couverture de code à 100% n'est pas un acte naturel. Pour la plupart des gens, les forcer à y parvenir serait une forme de torture.
Nous avons besoin de processus, d'outils, de langages et de code qui correspondent à nos modèles mentaux naturels. Si nous ne le faisons pas, il n'y a aucun moyen de tester la qualité d'un produit.
Il suffit de regarder tous les logiciels disponibles aujourd'hui. La plupart de ça gâche assez régulièrement. Nous ne voulons pas croire cela. Nous voulons croire que notre technologie est magique et nous rendre heureux. Et nous choisissons donc d'ignorer, d'excuser et d'oublier la plupart du temps que notre technologie est en panne. Mais si nous prenons une évaluation honnête des choses, la plupart des logiciels disponibles aujourd'hui sont assez merdiques.
Voici quelques efforts pour rendre le codage plus naturel:
https://github.com/jcoplien/trygve
https://github.com/still-dreaming-1/PurposefulPhp
Ce dernier est extrêmement incomplet et expérimental. En fait, c'est un projet que j'ai commencé, mais je crois que ce serait un énorme pas en avant pour le métier de la programmation si je pouvais un jour m'y consacrer pour le terminer. Fondamentalement, c'est l'idée que si les contrats expriment les seuls aspects d'un comportement de classe qui nous intéressent, et que nous exprimons déjà les contrats sous forme de code, pourquoi ne pas seulement avoir les définitions de classe et de méthode avec les contrats. De cette façon, les contrats seraient le code, et nous n'aurions pas besoin de mettre en œuvre toutes les méthodes. Laissez la bibliothèque découvrir comment honorer les contrats pour nous.