------ art_5373_5200519.1115498739991 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline object = get_some_object # get_some_object returns nil object.perform_action_of_great_importance # action never gets performed - no error On 5/5/05, John Carter <john.carter / tait.co.nz> wrote: > > On Fri, 6 May 2005, Alexey Verkhovsky wrote: > > > John Carter wrote: > > > >> A very simple and generic way of improving the reliability of Ruby > >> programs is to implement the NullObject pattern by allowing nil to > >> accept all and every method instead of throwing a NoMethodError. > > > > I, for one, would rather see it throwing an error as it is now. Dead > programs > > don't tell lies. > > I would suggest next 5 times you have a nil class throws > NoMethodError crash, just add this at the head of your program... > > class NilClass > def method_missing( sym, *args) > nil > end > end > > And see what happens. > > If, your program then works correctly, then I am right. > > If, your still program thows an exception or reports an error, but perhaps > a slightly different point, then I am still right, namely this change > doesn't hide bugs. > > If the program silent proceeds to do the wrong thing, then I am wrong. > > I ask members of this list to actually try this experiment the next couple > of times they hit a nil throws NoMethodError and send the results to me. > > I will summarize to the list. > > If I prove wrong, I will gladly retract my RCR and apologise. > > John Carter Phone : (64)(3) 358 6639 > Tait Electronics Fax : (64)(3) 359 4632 > PO Box 1645 Christchurch Email : john.carter / tait.co.nz > New Zealand > > This rock is covered by a very very thin layer of life. (Think 6000km > of rock followed by a meter or so of biomass.) > > -- Bill Atkins ------ art_5373_5200519.1115498739991--