Path: csiph.com!usenet.pasdenom.info!gegeweb.org!usenet-fr.net!nerim.net!novso.com!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.012 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; '16,': 0.03; 'subject:code': 0.07; 'modules.': 0.09; 'cc:addr:python-list': 0.10; 'itself.': 0.11; 'debugger,': 0.16; 'describing': 0.16; "developers'": 0.16; 'eckhardt': 0.16; 'rationale': 0.16; 'run.': 0.16; 'mon,': 0.16; 'wrote:': 0.17; 'drawing': 0.17; 'pieces': 0.17; 'module': 0.19; 'code.': 0.20; 'bit': 0.21; 'help.': 0.22; 'cc:2**0': 0.23; 'cc:no real name:2**0': 0.24; 'idea': 0.24; 'cc:addr:python.org': 0.25; 'header:In-Reply-To:1': 0.25; '(which': 0.26; 'am,': 0.27; 'module.': 0.27; 'websites,': 0.27; 'message-id:@mail.gmail.com': 0.27; "doesn't": 0.28; 'received:209.85.212': 0.28; 'helpful.': 0.29; 'running.': 0.29; 'though.': 0.29; 'url:mailman': 0.29; 'class': 0.29; 'that.': 0.30; 'function': 0.30; 'code': 0.31; 'url:python': 0.32; 'structure': 0.32; 'could': 0.32; 'url:listinfo': 0.32; 'hopefully': 0.33; 'handle': 0.33; 'guys': 0.33; "can't": 0.34; 'program,': 0.34; 'received:google.com': 0.34; 'text': 0.34; 'done': 0.34; 'received:209.85': 0.35; 'there': 0.35; 'but': 0.36; 'url:org': 0.36; 'should': 0.36; 'too': 0.36; 'resources': 0.37; 'received:209': 0.37; 'subject:: ': 0.38; 'things': 0.38; 'gives': 0.39; 'build': 0.39; 'where': 0.40; 'header:Received:5': 0.40; 'url:mail': 0.40; 'your': 0.60; 'is.': 0.62; 'provide': 0.62; 'between': 0.63; 'information': 0.63; 'more': 0.63; 'within': 0.64; 'great': 0.64; 'jul': 0.65; 'superior': 0.66; 'ask,': 0.84; 'joel': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=/8BFdgj5soMitojjbb7zl1LyIFx7aXP52/Dl2x23DaM=; b=J8yXaUFyg8Q+v0nToQcZkK9w6zir1H6AW6gxDzkAzNAgtFgPWkfw5zkPmhbUyjFLQl sgC3O1wJhZ3CQjxNKGR7CgQ/E+c3mvoEY95GS7LbWdptQTl9arwTzONo+jGf/u1CfycA iHPtNnaU90FIMRTlq7XF2T1IcDNLJTCLcHUSlo/OEfHGWidBLisPCffCwv52RKOuDTl8 TYfI0zd2ewZU9FIGtzesmnb5GjLBtzDAuXULe2Rma/KflYjg0nav+nB14SoJ0IkwLYu4 g6FEWAVc/NyaFMbBfa2YM1goteYQaKb/MxDmVVq7xozFBYoZIkDALxoNAZ248aCKfAxY kS9g== MIME-Version: 1.0 In-Reply-To: References: Date: Mon, 16 Jul 2012 05:00:42 -0400 Subject: Re: Diagramming code From: Joel Goldstick To: Ulrich Eckhardt Content-Type: text/plain; charset=UTF-8 Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 39 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1342429243 news.xs4all.nl 6916 [2001:888:2000:d::a6]:58824 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:25403 On Mon, Jul 16, 2012 at 3:58 AM, Ulrich Eckhardt wrote: > Am 16.07.2012 03:57, schrieb hamilton: > >> OK then, let me ask, how do you guys learn/understand large projects ? > > > 1. Use the program. This gives you an idea what features are there and a bit > how it could be structured. > 2. Build the program, to see what is done to get the program running. This > should give you an idea what pieces there are and where they are [from]. > 3. Read design documentation (which is too often outdated) which should give > you an idea what the intention of the project's structure is. > 4. Read the code documentation (which is hopefully more up to date). This > should give you an idea about responsibilities within the code. > 5. Read the code itself. This can also be done while single-stepping through > it with a debugger, just to see it run. > > Of course there are also secondary resources like developers' and users' > mailinglists, websites, bugtrackers that provide information and help. > > Sometimes, drawing a few diagrams from steps 3 and 4 to document > relationships between things is helpful. IMHO having a text describing the > relationships in prose is superior to that though. In particular a diagram > can't describe the rationale for something, you need prose for that. > > HTH & YMMV > > Uli > -- > http://mail.python.org/mailman/listinfo/python-list Do you know about pydoc? Its a great way to get a handle on your modules. It doesn't make diagrams, but a synopsis of what is in the module. It makes use of docstrings, for the module and each class and function in the module. -- Joel Goldstick