[phobos] Split std.datetime in two?
Andrei Alexandrescu
andrei at erdani.com
Thu Feb 10 14:28:22 PST 2011
On 2/10/11 11:33 AM, Jonathan M Davis wrote:
> Well, as Steven says, most of std.datetime is unit tests. And probably over half
> of the rest is documentation, since most of the functions themselves are
> relatively short and simple.
That means there are too many unit tests. There is such a thing as too
much of a good thing.
> Add to that that I tend to like a fair bit of
> vertical space in my code (e.g. return statements pretty much always have a
> blank line above them), and how I code tends to take up a fair bit more LOC than
> you would without actually being more code.
As I mentioned, it would be courteous to your other colleagues if you
were more economical with vertical space. Many people (and most of
Phobos devs) consider vertical space a rare commodity.
> It wouldn't surprise me that if I
> were to format std.algorithm in a manner that I'd typicall write it, it would at
> least double in line count simply due to additional blank lines that I'd
> introduce for code legibility.
I consider legible code compact code that I can keep on one screen and
understand what it does.
> And, of course, if I'd written std.algorithm, it
> would almost certainly have had quite a few more unit tests. None of that
> increases the size of the actual binary.
It's not the size of the binary I'm worried about.
> I don't think that std.datetime is the
> largest module in Phobos, but I do think that comparing its line count to
> something like std.algorithm really tells you how much of a difference it makes
> in the size of the binary - especially when so much of it is unit tests which
> wouldn't end up in a binary.
One thing is certain: someone who wants to take a look at std.datetime
has the prospect of navigating 34KLOC.
> The unit testing functions I wrote are pretty much in the same boat. They had
> thorough unit tests - testing not only all of its code paths (which is what the
> % code coverage gives you) but an appropriate range of values. The functions
> themselves weren't all that long.
They are unrolled loops that should be rolled. Most likely they test the
same thing several times.
> P.S. Weren't you considering increasing the character limit beyond 80? I'm not
> about to go and edit std.datetime for line width until that's definitely decided.
> At the moment, I'm working on improving the documentation (mostly for
> consistency rather than length, though its length should be somewhat reduced
> when I'm done) and that will make the documentation and examples at most 80
> characters wide, but I haven't started in on the rest of it yet. Most of the
> long lines are unit tests though, I believe (some of which are ludicrously long
> simply because it's easier to read an assertion on a single line).
Generally I don't want to impose something as much as us all reaching a
consensus about it. Some of Phobos people (I recall you and Don) prefer
larger limits. On the other hand, there _are_ some things that will
never reach an agreement so someone needs to just set some limits.
Andrei
More information about the phobos
mailing list