On Fri, Nov 15, 2013 at 9:10 PM, Tim Peters <tim.pet...@gmail.com> wrote:
> > _DI4Y = _days_before_year(5) > > # A 4-year cycle has an extra leap day over what we'd get from pasting > > # together 4 single years. > > assert _DI4Y == 4 * 365 + 1 > > > > To me, the constant should be directly set to its known value. > > _DI4Y = 4*365 + 1. > > The function should then be tested in test_datetime. > > self.assertEqual(dt._days_before_year(5), dt._DI4Y) > > I think making that change would be pointless code churn. Harmful, > even. As the guy who happened to have written that code ;-), I think > it's valuable to have the _code_ (not off buried in some monstrously > tedious test file) explain what the comments there do explain, and > verify with the assert. If anyone needs to muck with the > implementation of datetime, it's crucial they understand what DI4Y > _means_, and that it's identical to _days_before_year(5). Its actual > value (4*365 + 1) isn't really interesting. Defining _DI4Y _as_ > _days_before_year(5) captures its _meaning_. > Interestingly, the corresponding C code is closer to what Terry suggested: /* Number of days in 4, 100, and 400 year cycles. That these have * the correct values is asserted in the module init function. */ #define DI4Y 1461 /* days_before_year(5); days in 4 years */ #define DI100Y 36524 /* days_before_year(101); days in 100 years */ #define DI400Y 146097 /* days_before_year(401); days in 400 years */ ... skipping to the init function ... /* A 4-year cycle has an extra leap day over what we'd get from * pasting together 4 single years. */ assert(DI4Y == 4 * 365 + 1); assert(DI4Y == days_before_year(4+1)); This is probably explainable by the limitations of the C language, but I would find _DI4Y = 4 * 365 + 1 assert _DI4Y == _days_before_year(5) to be more natural than the way it is currently written. > > Ain't broke - don't fix. Agree.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com