From: "Guy N. Hurst" Date: 2000-12-20T19:18:18+09:00 Subject: [ruby-talk:7755] Re: Code sample for improvement David Alan Black wrote: > > Hello -- > > On Wed, 20 Dec 2000, Guy N. Hurst wrote: > > > I looked at the other samples and decided to give this a try. I > > figured there might be a nice way to use the Time class for this. > > Besides, there aren't 30 days in every month ;-) > > True... but the lump in the carpet has to end up somewhere. ... > > Obviously these make sense with regard to 1/1/1970, but for a given > case it may be more relevant or informative to average things out. > Ok. But that is limited to the algorithm. > (Or did your ';-)' cover all this? :-) > I had to have some extra excuse for departing from the 1 month=30 day formula in order to use the handy Time class ;-) > > In making this code, I am taking advantage of the fact that the > > English words, including your accepted abbreviations "min" and > > "sec", match the methods I will use from the Time class, which I use > > as my workhorse. No tables are needed. Since this seems like a > > useful method, I added it into the String and Integer classes. > > > Personally, I think this better reflects the Ruby way to do things. > > A bit of a conversation-stopper... :-) but anyway: lol :-) > doesn't it depend > on what "things" one is doing? I am actually referring more to how things are arranged and not necessarily the algorithm used to solve this problem. (Although I did think the algorithm was more accurate) So the "things" are based on the following- Steve originally said >> I was interested in how the new constructs available in Ruby, like closures and co-routines, could help clean up what really is pretty ghastly code. I've played around with a few other approaches, but nothing really seems to stand out as being a better way of doing things. << And I personally think that the arrangement I discovered stands out, which is why I bothered to post it. I also think that the other approaches people have posted represent some nice inventions, especially your assortment :-) But in spite of that, I was hoping to also find a way to provide an answer to Steve's other question: >> Maybe generalise the code and put it into a class? << In doing that I did look for a way to avoid using divmod or the table or scattered logic. And I found a way. Also, no one else put their code into a class. > Your approach is a great way to > translate seconds into an English representation of time since > 1/1/1970. But I think there are legitimate reasons that one might > interpret the seconds-to-English task differently. You have a good point here; I did not really think it mattered, since he already accepted an inaccurate 30 day/month standard. (But then the trick I used in the algorithm also has an issue, as you aptly pointed out.) > (By the way, I'm > not specifically defending my own version of this -- I have nothing > riding on that, nor any conviction that it couldn't be improved upon.) > I believe you. I think you were having fun. And I did leave it open that what I discovered could be improved upon also; I just think it was better so far, for what was asked. I almost didn't put that part in there, but I really felt that way. Wouldn't you agree that, since functions are not first class objects in Ruby, that it makes more sense to focus on the objects? I think this is what Steve was getting at (Steve?). To do this it seems that I should minimize parameters and put the methods inside appropriate classes with a carefully selected name. So, perhaps this is a conversation *starter* ? :-) Yeah, it is probably safer to just say you can do things as you like, but in fact, I hear plenty of people wondering if there is a specific ideal way of doing things in Ruby, and if so, what is it? Sometimes it may really be a toss-up. But not always. Not in this case, either. It is ideal to be able to make a method that belongs to the object's class. > > I really like Ruby :-) > > Hey, I can beat that -- I even like the Ruby discussion list :-) > :-) Guy N. Hurst -- HurstLinks Web Development http://www.hurstlinks.com/ Norfolk, VA - (757)623-9688 PHP/MySQL - Ruby/Perl - HTML/Javascript