From: Ryan Davis Date: 2012-04-06T19:50:21+09:00 Subject: Re: Design pattern question On Apr 5, 2012, at 15:05 , Steve Klabnik wrote: > Adding an empty method that throws a slightly > different error doesn't really do anything worthwhile in my opinion. On Apr 5, 2012, at 15:05 , Steve Klabnik wrote: Adding an empty method that throws a slightly different error doesn't really do anything worthwhile in my opinion. Because being explicit about the interactions across classes isn't worthwhile? Having an explicit place to document the contract isn't worthwhile? Sorry... I'm not buying it. From your example [with my edits]: > class Abstract > [# contract doco] > def foo > [raise] NotImplemented[Error][, "helpful explanation--much more so than NoMethodError"] > end > end Now I know where I can document the foo contract and suggest proper ways to implement it. You lose that when you throw that out the window and go with duck typing. That reminds me... How do you suggest a beginner know the difference between a typo and an unimplemented ducktyped method interface?