Hi - I just ran a great MobProgramming session with Smalltalk for the XProLo 
group - and there was lots of great feedback and questions, however one of them 
really got me thinking…

We did a little exercise to create a Person class with name, dob - and then we 
TDD’d an age method… which seems simple on the surface but it gets to an 
interesting point - what about leap years? How old is someone on those years?

I thought that our plethora of Date/Duration classes might handle this - but I 
couldn’t spot something obvious and was wondering if someone had a neat answer.

Essentially if you try:

age

^Date today - self dob

You get a Duration,

But there isn’t :

^(Date today - self dob) asYears

There is is asDay

^(Date today - self dob) asDays

But then can you really 

^(Date today - self dob) asDays / 365) truncated

But what about leap years… so

^(Date today - self dob) asDays / 365.25) truncated


It all feels a bit inelegant and I suspect there is a better Smalltalk way that 
is eluding me? Any suggestions?

Tim

Reply via email to