C'est un peu inquiétant que le programmeur original n'ait pas pris la peine de faire l'une des parties les plus importantes de son travail. Cependant, il y a beaucoup de "bons" programmeurs terribles, donc ce n'est pas si inhabituel.
Cependant, le fait de vous faire documenter le code est également un très bon mécanisme de formation - vous devez lire et comprendre le code avant de pouvoir écrire ce qu'il fait, et en plus d'acquérir des connaissances sur les systèmes, vous allez sans aucun doute apprendre quelques trucs et astuces à partir des bonnes (et mauvaises !) choses que l'autre programmeur a faites.
Pour vous aider à rédiger votre documentation de manière rapide et cohérente, vous pouvez essayer mon module complémentaire pour Visual Studio, Documentation sur AtomineerUtils Pro . Cela vous permettra d'éviter le travail fastidieux de création et de mise à jour des commentaires, de vous assurer que les commentaires sont complets et en phase avec le code, et de vous concentrer sur le code lui-même.
Quant à savoir comment le code fonctionne...
Espérons que les noms des classes, des méthodes, des paramètres et des variables seront descriptifs. Cela devrait vous donner un assez bon point de départ. Vous pouvez ensuite prendre une méthode ou une classe à la fois et déterminer si vous pensez que le code qu'elle contient fournit ce que vous pensez que le nom implique. S'il existe des tests unitaires, ils vous donneront une bonne indication de ce que le programmeur attendait du code (ou de sa gestion). Quoi qu'il en soit, essayez d'écrire quelques tests unitaires (ou plus) pour le code, car en réfléchissant aux cas particuliers qui pourraient casser le code et en déterminant pourquoi le code échoue à certains de vos tests, vous aurez une bonne compréhension de ce qu'il fait et de comment il le fait. Vous pourrez ensuite ajouter à la documentation de base que vous avez rédigée les détails les plus utiles (ce paramètre peut-il être nul ? quelle plage de valeurs est légale ? Quelle sera la valeur de retour si vous passez une chaîne vide ? etc).
Cela peut être décourageant, mais si vous commencez par les petites classes et méthodes (par exemple, la propriété Name qui ne renvoie qu'une chaîne de caractères), vous vous familiariserez avec le code environnant et serez en mesure de passer progressivement aux classes et méthodes plus complexes.
Une fois que vous avez rédigé la documentation de base du code pour les classes, vous devriez être en mesure de rédiger une documentation de synthèse externe qui décrit le fonctionnement du système dans son ensemble. Vous serez alors prêt à travailler sur cette partie de la base de code, car vous comprendrez comment tout s'imbrique.
Je recommanderais d'utiliser la documentation XML (voir les autres réponses) car elle est immédiatement récupérée par Visual Studio et utilisée pour l'aide intellisense. Ainsi, toute personne écrivant du code qui appelle vos classes recevra de l'aide dans des infobulles au fur et à mesure qu'elle tape le code. Il s'agit d'un avantage majeur lorsqu'on travaille avec une équipe ou une base de code importante, mais de nombreuses entreprises/programmeurs ne réalisent pas ce qu'ils ont manqué, en tapant leurs pierres (non documentées) ensemble dans les âges sombres :-)