Rubyは実はメソッド名には予約語を使えるので、APIを設計するという意味では予約されててもあまり困らない。
class C def end :end end end c = C.new p c.end #=> :end p RUBY_VERSION #=> 1.8.4
ただし、文脈によってはうまくparseしてくれないので、Module#define_methodで代用するテクニックが必要だったり。メソッドを使う側はいいとして、書く側は面倒かも。それから、呼ぶときもレシーバを明示的に書かないとparse errorになる場合もあるけど。
でも、本当に身内で使うようなメソッド、privateなメソッドは、予約語を避けて命名してもあまり困らないしなー。そして、publicなメソッドはどのみちレシーバを指定するわけだし。
それにしてもさすがにメソッドをifとかelseとか命名する邪悪なコードを書くのはDHHだけで十分だ。
それよりJavaはgotoをどうするつもりだ。