Les classes partielles ne vous donnent que beaucoup. Il n'y a toujours aucun moyen, à ma connaissance, de séparer votre définition de classe de la mise en œuvre, de sorte que chacun existe dans un fichier séparé. Donc, si vous aimez développer sur la base d'un paradigme de besoin de savoir, vous êtes en quelque sorte coincé. Fondamentalement, il ya trois niveaux, un développeur peut travailler à ...
1) Possède tout le code et a accès à, et maintient tout cela.
2) souhaite utiliser des classes de base utiles qui peuvent faire partie d'un framework, ou peut être juste une classe utile avec certaines méthodes virtuelles, etc, et souhaite étendre, ou ré-implémenter une base virtuelle méthodes d'intérêt de classe. Maintenant, le développeur ne devrait pas avoir besoin d'aller voir le code dans la classe de base afin de comprendre les choses au niveau fonctionnel. Si vous comprenez le travail d'une fonction, c'est les paramètres d'entrée et de sortie, il n'y a pas besoin d'aller et de rayer le code source. Si vous pensez qu'il y a un bug, ou qu'une optimisation est nécessaire, référez-vous au développeur de 1) qui possède et maintient le code de base. Bien sûr, rien ne dit que 1) et 2) ne peuvent pas être associés au même développeur, auquel cas nous n'avons aucun problème. En fait, c'est plus souvent le cas que je soupçonne. Néanmoins, il est toujours bon de garder les choses bien séparées en fonction du niveau auquel vous travaillez.
3) Un développeur doit utiliser un DLL objet/composant déjà emballé/scellé, ce qui expose les interfaces pertinentes.
Dans le contexte de C#, 1) et 3) n'ont aucun problème. Avec 2) je crois qu'il n'y a aucun moyen de contourner cela (à moins que vous ne passiez d'exposer des méthodes de base virtuelles à exposer des méthodes d'interface qui peuvent être réimplémentées dans un composant possédant la classe de base potentielle). Si je veux jeter un oeil à une définition de classe pour parcourir les méthodes, les fonctions d'échafaudage, etc., je dois aussi regarder beaucoup de code source, ce qui m'empêche de me concentrer sur ce que j'essaie de faire. .
Bien sûr, s'il existe une documentation de définition de classe externe à celle que nous faisons normalement (en-têtes et fichiers source), je dois admettre que dans le contexte de 2), il n'y a aucune raison fichier de définition pour acquérir des connaissances fonctionnelles.Alors peut-être que Tom a créé C#, et a décidé de mélanger la définition de classe avec l'implémentation pour encourager les développeurs à avoir des documents externes pour leurs définitions de classe et des interfaces qui font cruellement défaut dans la plupart des entreprises informatiques.