Quelqu'un a-t-il déjà essayé de créer une documentation de code complète avant d'écrire le code? J'y pensais plus tôt parce que je pensais que cela aiderait à écrire une interface concrète et ferait en sorte que votre conception initiale ne soit pas étayée en vous faisant réfléchir sur la façon dont les classes interagissent. Est-ce une bonne idée? Quelqu'un l'a-t-il essayé? Aune
documentation
aune
la source
la source
Réponses:
Oui.
Cela vous fait réfléchir à ce que votre code est censé faire exactement . L'idée est que vous pouvez commencer avec n'importe quelle partie du code et savoir exactement ce qui doit être fait pour terminer ce module.
Il est également plus facile de réparer quelque chose sur la planche à dessin que dans l'IDE.
la source
Il y a deux façons d'y penser:
1) Documentation comme dans les documents Word, Wiki, etc. Par définition, vous ne pouvez pas avoir une documentation de code complète parce que vous n'avez pas de code à documenter. Vous pouvez essayer de documenter la conception de haut niveau, les hypothèses, les interfaces et les contrats en premier.
2) Documentation en tant que tests exécutables. Il existe une école de pensée qui déclare que les tests unitaires exécutables sont la meilleure documentation. Cette école de pensée préconise également ce type de documentation avant d'écrire le code (TDD). En même temps, vous n'écrivez pas tous les tests pour l'ensemble du système dès le début. Vous le décomposez d'abord par cas d'utilisation, puis vous effectuez des tests et du code par cas d'utilisation.
la source
Commençant par la documentation est le modèle classique de cascade, et a tous les pièges associés à ce modèle. Globalement, plus vous documentez, plus vous devez mettre à jour lorsque les exigences changent. Un avantage de commencer avec la documentation utilisateur est que vous pourriez obtenir des commentaires (et donc des modifications) plus tôt. Mais l'expérience montre que la plupart des gens ne savent pas faire correspondre mentalement la documentation aux actions. Nous utilisons donc plutôt des prototypes, qui permettent aux gens d'utiliser réellement le logiciel et de donner leur avis de cette façon.
Une variante de la «documentation d'abord» est la programmation alphabétisée . Commencez par écrire une description de ce que le programme fera du point de vue des programmeurs. Continuez à peaufiner cela jusqu'à ce qu'il compile. Voila, un programme alphabétisé.
la source
Personnellement, je trouve préférable d'utiliser des diagrammes (tels que UML) pour faire une modélisation simple pour montrer le flux des choses. C'est beaucoup plus rapide que de documenter les choses avec des mots et si cela est fait correctement, cela peut être tout aussi descriptif. J'hésiterais cependant à faire de la documentation complète parce que personnellement, je n'ai jamais eu de projet sur lequel j'ai travaillé et qui n'a pas changé au cours de sa programmation.
EDIT: Certains documents doivent cependant être rédigés au fur et à mesure. Cela facilite plus tard la documentation complète.
la source
Joshua Bloch discute de ce point dans son interview pour le livre "Coders at Work".
Contrairement à des vues plus orthodoxes et académiques, il conseille quelque chose à l'écoute de vos pensées (peut-être l'avez-vous lu vous-même?): Qu'avant d'écrire la documentation, vous devez comprendre ce que vous voulez du système et obtenir une image plus "réelle" " sentiment. À cette fin, il concevrait une partie des interfaces et du code client qui les utilise.
Si vous pensez déjà dans ce sens, il serait bon que vous puissiez vous procurer le livre et lire l'intégralité de l'interview. Comme je l'ai dit, il est toujours très éclairant.
la source
Certaines personnes vont même plus loin et déclarent qu’une entreprise devrait
Voir http://www.allthingsdistributed.com/2006/11/working_backwards.html
la source
La première écriture de la documentation complète du code est probablement exagérée et rappelle quelque peu la méthodologie de la cascade. Cependant, j'ai constaté qu'une approche plus pragmatique consiste à rédiger le fichier README en premier. Voici pourquoi:
Le fichier README ne documente pas tous les détails de votre projet. Au lieu de cela, il contient généralement les informations suivantes:
Écrire le "argumentaire de vente" à l'avance me force à être clair sur pourquoi ce projet devrait exister et pourquoi les développeurs devraient l'utiliser. Le simple fait d'écrire des phrases complètes pour décrire le projet le change souvent pour le mieux: vous le comprenez mieux, développez de nouvelles idées et découvrez des problèmes potentiels. C'est aussi un excellent outil de priorisation: tout ce qui se trouve dans le «pitch de vente» est un incontournable!
Les «exemples rapides» et le «guide de démarrage rapide» m'obligent à réfléchir aux principaux cas d'utilisation du point de vue de l'utilisateur. J'ai trouvé que faire cela avant d'écrire du code - avant d'être embourbé dans les détails d'implémentation et les délais serrés - conduit à des API et des conceptions beaucoup plus propres. N'oubliez pas: les programmes doivent être écrits pour que les gens puissent les lire, et accessoirement pour les machines à exécuter ( SICP ).
Dans "documentation supplémentaire", je crée un aperçu des pièces qui auront besoin d'une documentation détaillée, à faire plus tard. «L'organisation du projet» me permet de savoir qui va travailler sur le projet et les pratiques de codage. Les "mentions légales" ... eh bien, peuvent aussi bien les supprimer.
Une fois ce README de base en place, vous disposez d'un document utile pour la discussion, les revues de conception, la répartition du travail et la planification du projet. Lorsque vous travaillez sur le projet, revenez fréquemment avec le fichier README pour vous assurer que vous êtes toujours sur la bonne voie. De plus, la mise à jour incrémentielle du fichier LISEZMOI et de la «documentation supplémentaire» au fur et à mesure signifie que toute votre documentation sera effectuée lorsque le code sera terminé, ce qui est une expérience beaucoup plus agréable que d'avoir à se précipiter pour tout documenter à la dernière minute.
Pour plus d'informations, consultez les informations suivantes:
la source
Pourquoi ne voudriez-vous pas penser à la façon dont les classes interagissent? Pourquoi est-ce une mauvaise chose? En fait, je pense aux interactions avant même de savoir quelles sont les classes. De cette façon, les classes s'identifient.
la source
Vous devez avoir une idée de ce que vous prévoyez de faire avant d'écrire le code. Le problème est toujours de savoir comment synchroniser ce que vous avez codé avec ce que vous avez écrit? Certains disent de ne pas essayer, d'autres disent d'oublier les documents initiaux et de maintenir les commentaires. Bien sûr, le code est toujours la source canonique. La question devient alors de savoir s'il vaut la peine de documenter ce que le code fait pour ceux qui viendront plus tard ou utiliseront le code. N'importe qui peut comprendre ce que fait une fonction. Le travail de l'écrivain est d'aider quelqu'un à comprendre en 5 minutes ce que n'importe qui peut comprendre en une heure. Additionnez les deltas et déterminez votre chemin.
la source