[phobos] Split std.datetime in two?
Jonathan M Davis
jmdavisProg at gmx.com
Wed Feb 9 21:54:57 PST 2011
Okay. On the whole, I'm fine with std.datetime being one, large module. It works
fine from a maintenance standpoint, and while some people have complained about
the large number of unit tests getting in the way of finding stuff in the file, I
find that having the unit tests right next to the functions like that to really
help with maintenance.
I do have one concern however. As there's a fair bit of functionality in there,
there's a lot of documentation, and I'm afraid that the documentation may be a
bit overwhelming to someone trying to figure out how to use std.datetime. On the
whole, everything in there is quite easy to use, but there's a lot of it.
So, what I'm wondering is if it would be worthwhile to split out the interval
and range stuff into a separate module. That wouldn't hugely reduce the size of
the module, but it _would_ make the documentation more manageable. It also has
the nice side effect that the three main date/time concepts would then be in
three separate modules. The duration types were already split into core.time,
because Sean needed a duration type for some stuff in druntime. The time points
would stay in std.datetime. And the time intervals would then be in
std.timeinterval (or whatever we wanted to call it). The documentation would
therefore be more easily digestible. Also, if and when I get around to coming up
with more date/time functionality, the main area that I'd likely be putting it
would be in the intervals and ranges (in particular, at some point, I'd like to
create functionality to handle date recurrence patterns), so the bulk of the new
stuff would end up in the smaller of the two time-related modules in Phobos,
thereby evening out their size a bit.
Again, I don't really have a problem with std.datetime being as big as it is
(though some people do), but I _am_ concerned that the documentation is going to
be a bit hard to digest for newcomers. It's not complicated, but there's a lot
of it. So, I'm thinking that there would be some value in create
std.timeinterval for the date/time interval and range functionality, thereby
reducing the size of std.datetime and making it easier for newcomers to digest.
It will also make it easier to find the interval and range-related functionality
if that's what you're looking for.
So, what are everyone else's thoughts on this? Andrei and Walter favored
std.datetime being one giant module, and I don't exactly disagree, but I do
think that splitting _some_ of its functionality out would make it more
digestible, and I know that there are at least a few folks who think that
std.datetime is just plain too large.
- Jonathan M Davis
More information about the phobos
mailing list