On Fri, 9 Jul 2010, Steven D'Aprano wrote: > This is a style question rather than a programming question. > > How large (how many KB, lines, classes, whatever unit of code you like to > measure in) should a module grow before I should break it up into a > package? I see that, for example, decimal.py is > 3000 lines of code, so > I can assume that 3 KLOC is acceptable. Presumably 3000 KLOC is not. > Where do you draw the line? > > For the purposes of the discussion, you should consider that the code in > the module really does belong together, and that splitting it into sub- > modules would mean arbitrarily separating code into separate files.
Myself, I would draw "the line" somewhere between 20-50 KLOC&C (code with comments) - if something takes a lot of place to comment, then maybe it should go to a separate unit. As of the other side of scale, this 3000 KLOC thing, I believe you would have encountered a performance hit. And probably a big one - I would be afraid of some O(n^2) dragon or something bigger, waiting deeply in CPython code to eat your performance. But, I am just fantasizing - I have no idea of CPython internals and how big is the biggest Python code written so far. Python code tends to be very concise, so 3 MLOC sounds rather extremal to me. On the other hand, it is possible nobody tested CPython for such extreme case. Speaking of performance, there is also target user, and her needs (CGI? desktop? etc). So I would take this under consideration, too - how many times per second (minute, day) this code will be executed? Regards, Tomasz Rola -- ** A C programmer asked whether computer had Buddha's nature. ** ** As the answer, master did "rm -rif" on the programmer's home ** ** directory. And then the C programmer became enlightened... ** ** ** ** Tomasz Rola mailto:tomasz_r...@bigfoot.com ** -- http://mail.python.org/mailman/listinfo/python-list