Date/time class changes to handle extended date ranges

David Jarvie lists at astrojar.org.uk
Mon Feb 20 02:24:23 GMT 2006


On Sunday 19 February 2006 23:42, 'R.F. Pels' wrote:
>On Sunday 19 February 2006 23.46, David Jarvie wrote:
>
>> As Thiago has said, that is exactly the reason for introducing a new class.
>
>And as I say: that is exactly the reason to come up with a better name.
>
>>> Yep. For example in those parts of Qt where a QDate is used such as the
>>> database classes. Drop in a KDate and there is a disconnect. Use a value
>>> outside the range offered in the QDate contract and there is a conversion
>>> error.
>>
>> I still don't see the problem. If you construct a QDate with an
>> out-of-range date, you get an invalid QDate, which the database handles in
>> whatever way it handles invalid dates. If you use a KDate with a date which
>> is out of range for QDate, it is implicitly converted to a QDate which is
>> invalid, which is the same as if you used a QDate all along. If you need to
>> test whether the KDate is a valid QDate, convert it explicitly to QDate and
>> test with isValid().
>
>Yech! Bletch! As I said earlier, that will lead to boilerplate like
>
>	qdate = kdate.convertToQDateObject();
>	if (qdate.isValid() == true)
>	{
>	  // No problem here
>	}
>	else
>	{
>  	  // You are f****d now. If you want to pass that
>	  // to a method expecting a valid QDate object, go
>	  // and write a bit of extra code to deal with this
>	}
>
>Again: if there is a disconnect between the implication of the name KDate and 
>its real functionality, don't call the class KDate. If the new class cannot 
>guarantee conversion without error, don't offer the conversion. It confuses 
>the people that are going to work with that class and draw a couple of 
>conclusions based on among others the Q->K convention.

I don't believe that it's either a hard-and-fast rule that Q and K classes have
to have exactly the relationship you describe, and nor do I think that it's
misleading if a class is properly documented. You have your opinions, I disagree.
If other people whose opinion carries weight agree with you, I am quite happy to
go along with that and change the name. But until then, I propose to use KDate
and KDateTime as the simplest, most straightforward names for the classes.

--
David Jarvie.
KAlarm author & maintainer.
http://www.astrojar.org.uk/linux/kalarm.html





More information about the kde-core-devel mailing list