2009-04-16 4 views
1

Un bon exemple de ceci est: http://github.com/tav/tweetapp/blob/a711404f2935c3689457c61e073105c1756b62af/app/root.pyComment débuggez-vous/démontez-vous/Apprenez du code Python de quelqu'un d'autre (basé sur le Web)?

Dans Visual Studio (ASP.net C#) où je viens, les classes sont généralement divisés en fichiers séparés + je peux définir des points de pause pour comprendre le niveau de code.

Si j'exécute un programme comme celui-ci, est-ce que je fais simplement "system.out" pour imprimer où se trouve le code dans lequel je suis?

J'ai lu ce https://stackoverflow.com/questions/246546/good-techniques-for-understanding-someone-elses-code ce qui était très utile.

Répondre

3

Vous avez rencontré un cas particulier de code qui sera difficile à comprendre. Ils ont probablement fait cela pour la commodité d'avoir tout le code dans un fichier.

Je recommande de laisser passer Epydoc. Il va créer une documentation HTML du programme. Cela vous montrera la structure de classe et vous pouvez même créer des diagrammes des fonctions qui appellent quelles autres fonctions.

http://epydoc.sourceforge.net/manual-usage.html

Vos autres options sont de le casser en plusieurs fichiers vous-même (qui je pense sera fastidieux et non de bien des avantages)

+1

+1: epydoc fait un bon travail - SI l'importation ne fait rien de trop pourri. Parfois, vous devez ajouter un if __name__ == "__main__" pour empêcher l'importation de décoller et d'être exécutée. –

0

Si vous installez Eclipse et PyDev vous pouvez définir des points d'arrêt dans le même comme vous pouvez dans Visual Studio. A défaut, l'impression d'informations à des points précis est souvent un bon moyen de voir ce qui se passe. J'ajoute assez souvent dans les informations de débogage de cette façon et je le laisse dans le code mais désactivé jusqu'à ce que je change une variable. Je trouve cela souvent utile si vous enfreignez le code et devez revenir en arrière et jeter un autre regard sur ce qui se passe. Mieux encore, envoyez vos informations de débogage à une classe de journalisation et vous pouvez commencer à utiliser la sortie dans les tests unitaires ... vous faites tester votre code correctement? ;)

Questions connexes