I don't mind large files, what I don't like are large functions. Formatting the file well can help too, like having easily visible boundaries between types of functions.
On Sep 16, 2010, at 7:03 AM, Jacob Carlborg wrote: > Yes, since we have public imports it's Ddoc that needs an enhancement. Glad > I'm not the only one that doesn't like modules with 6K lines of code. But > wouldn't it be so much worse having to look at a documentation that is more > fine grained (with sub packages) then a documentation that is based on a flat > module hierarchy? There could be a short description or summary in the module > that publicly imports all modules in the package that describes the whole > package. > > /Jacob Carlborg > > On 16 sep 2010, at 15:52, David Simcha wrote: > >> I'd like to see a way to make Ddoc produce documentation for the public >> imports of a module. This way we could make a simple, coarse-grained import >> system for the user (i.e. import std.container and you've got every >> container you could possibly want), but have each container be implemented >> in its own file in std.containerimpl.somecontainer for development >> convenience and publicly imported by std.container. The only major problem >> I see with this is Ddoc, as mentioned above. >> >> The bottom line is that, when using D, I hate being forced to write tons of >> import statement boilerplate to do anything non-trivial (what you get if you >> make the import system fine-grained) but when developing Phobos I hate >> having to scroll through 6,000 line files like std.algorithm (what you get >> when you make the import system coarse-grained). I'd like to clean this up >> from the developer's perspective, but in a way that's transparent to the >> user. >> >> On Thu, Sep 16, 2010 at 9:46 AM, Jacob Carlborg <d...@me.com> wrote: >> I don't think it's the number of modules that makes it hard, it's because of >> the organization of the modules. Too many modules in one package (std) and >> too much code in one module. Take std.container for example, every container >> type in on module, that's just insane. It should clearly be, in my opinion, >> a container package (or actually I would prefer it to be called collection) >> and one module per container type. std.container is almost 3500 LOC and have >> four (or something like that) container types, what happens when (if) we get >> more container types like different types of trees and other containers, >> just put everything in std.container? That is just too much code in one >> module. Just my opinion. >> >> >> /Jacob Carlborg >> >> On 16 sep 2010, at 15:30, Lars Tandle Kyllingstad wrote: >> >> > I disagree, I like the flat hierarchy. >> > >> > And just to clarify my earlier e-mail, for which I may have chosen a bad >> > subject: I do not think that the number of modules in Phobos is too >> > high in general. I think it has too many *obsolete* modules, and too >> > many modules with very limited functionality. >> > >> > If we got rid of the cruft that has been accumulating, and merge some of >> > the smaller modules into larger ones, Phobos would seem a lot less >> > unwieldly. >> > >> > -Lars >> > >> > >> > >> > On Thu, 2010-09-16 at 14:54 +0200, Jacob Carlborg wrote: >> >> I think it's time for Phobos to start using sub packages and drop the >> >> flat module hierarchy. >> >> >> >> On 15 sep 2010, at 13:56, Lars Tandle Kyllingstad wrote: >> >> >> >>> I said in an earlier e-mail that I think std.file, std.path, and >> >>> std.stdio should remain separate modules. However, I do think that, for >> >>> a library with a flat module hierarchy, Phobos has acquired way too many >> >>> modules. Some of them should (and will) be removed, and some could be >> >>> merged. >> >>> >> >>> The following are my suggestions for how to trim the Phobos module list >> >>> a bit. At the bottom I'll show the resulting module list. >> >>> >> >>> >> >>> Modules which could be removed, most of them *right now*, because they >> >>> are superseded by other modules or built-in functionality: >> >>> >> >>> std.bind - use lambdas or nested functions instead >> >>> std.boxer - superseded by std.variant >> >>> std.contracts - superseded by std.exception >> >>> std.cstream - superseded by std.stdio.File >> >>> std.demangle - superseded by core.demangle >> >>> std.iterator - superseded by std.range >> >>> std.openrj - obscure format, better to use std.json >> >>> std.perf - superseded by StopWatch >> >>> std.regexp - superseded by std.regex >> >>> std.stream - ranges are the way to go >> >>> std.syserror - superseded by std.windows.syserror >> >>> std.c.* - superseded by core.stdc.* and core.sys.* >> >>> >> >>> Modules for which there is no documentation on the D home page, and >> >>> which I suspect nobody are using: >> >>> >> >>> std.loader >> >>> std.stdarg >> >>> std.typelist >> >>> >> >>> Modules which can be merged into a single one, possibly after >> >>> substantial/complete rewrites: >> >>> >> >>> std.compiler + std.cpuid + std.system (= std.sysinfo?) >> >>> std.ctype + std.uni (= std.character?) >> >>> std.date + std.dateparse + std.gregorian + std.stopwatch >> >>> (= std.datetime?) >> >>> std.encoding + std.utf (= std.encoding?) >> >>> std.socket + std.socketstream (= std.socket (or std.net?)) >> >>> std.typecons + std.typetuple (= std.types?) >> >>> >> >>> And finally, some renaming suggestions (which were actually posed by >> >>> Andrei): >> >>> >> >>> std.conv -> std.convert >> >>> std.stdio -> std.io >> >>> >> >>> >> >>> All this gives us the following, nice and short (well... shorter, at >> >>> least) module list: >> >>> >> >>> std.algorithm >> >>> std.array >> >>> std.base64 >> >>> std.bigint >> >>> std.bitmanip >> >>> std.character >> >>> std.complex >> >>> std.concurrency >> >>> std.container >> >>> std.convert >> >>> std.datetime >> >>> std.encoding >> >>> std.exception >> >>> std.file >> >>> std.format >> >>> std.functional >> >>> std.getopt >> >>> std.intrinsic >> >>> std.io >> >>> std.json >> >>> std.math >> >>> std.md5 >> >>> std.metastrings >> >>> std.mmfile >> >>> std.numeric >> >>> std.outbuffer >> >>> std.path >> >>> std.process >> >>> std.random >> >>> std.range >> >>> std.regex >> >>> std.signals >> >>> std.socket >> >>> std.stdint >> >>> std.string >> >>> std.sysinfo >> >>> std.traits >> >>> std.types >> >>> std.variant >> >>> std.xml >> >>> std.zip >> >>> std.linux >> >>> std.windows >> >>> >> >>> >> >>> Just something to think about. >> >>> >> >>> -Lars >> >>> >> >>> _______________________________________________ >> >>> phobos mailing list >> >>> phobos@puremagic.com >> >>> http://lists.puremagic.com/mailman/listinfo/phobos >> >> >> > >> > >> > _______________________________________________ >> > phobos mailing list >> > phobos@puremagic.com >> > http://lists.puremagic.com/mailman/listinfo/phobos >> >> -- >> /Jacob Carlborg >> >> _______________________________________________ >> phobos mailing list >> phobos@puremagic.com >> http://lists.puremagic.com/mailman/listinfo/phobos >> >> _______________________________________________ >> phobos mailing list >> phobos@puremagic.com >> http://lists.puremagic.com/mailman/listinfo/phobos > > -- > /Jacob Carlborg > > _______________________________________________ > phobos mailing list > phobos@puremagic.com > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list phobos@puremagic.com http://lists.puremagic.com/mailman/listinfo/phobos