Hamamatsu.rb #86

Hamamatsu.rb #86、
今回は「プロを目指す人のためのRuby入門(通称チェリー本)」の読書会。
 
読書会形式でやるのは数年ぶりということでどういう形で進めていこうか全くノープランだったのだけど、
いろいろアドバイスをもらった結果、数項分(2.1.1 ~ 2.1.2とか)を黙読、その後意見交換という形式で進めていった。
著者の伊藤さんがFacebookでシェアしてくれたおかげで参加者も多かったし、意見交換のフェーズでは初心者から経験者まで発言が沢山あってかなり盛り上がったので良かった良かった。
 
 
チェリー本は"こういう書き方もできるけど一般的にはそうしない” と明言してくれるのが良い。
郷に入ってはというわけではないけど、例えば変数のネーミングルールとか、
Rubyistミームを押さえておくとおおよそ初心者から脱却した雰囲気のコードになるんじゃないかと思う。
 
と、偉そうなことを言いつつ。僕も雰囲気でRubyを書いているので
「あー、そーゆーことね、完全に理解した(←わかってない)」的な話題があったのは内緒だ。
 
 
マニアックな話題で盛り上がるのも面白いし、それで会場全体がガヤガヤしてるだけで全員の満足度がアガっているような錯覚に陥るのだけど、
実際のところはどうだったんだろう。
今回は初心者の方も多かったのでしっかり感想を聞いておくべきだった。これは次回への課題かな。
ほか、電子版だとページ番号がわかりづらいという意見があったので、発言するときに該当の箇所を明示する等、ある程度の運用ルールを定めつつやっていこう。
 
あと、例題を解いたコードを共有したいという意見もあって、これはどうしようかな。とりあえずgistに上げてURLを共有すればいいかな。
GoogleDocs上でコードを貼り付ければそれで事足りる気もするけど。
 
 
そういえば、聞いてみたけど結局これといった解決策がなかった話題を思い出した。
例えば以下のようなメソッドがあったとき、
 
def country_name id
  if id == "JPN"
    "Japan"
  end
end
 
このコードでは、”JPN"以外のidを渡した場合にはnilが返ってくるわけだけど、
以下のようにelseでブランクを返したりしない?って話。
 
def country_name id
  if id == "JPN"
    “Japan
  else
    ""
  end
end
 
最初のコードだとメソッドチェインしたときにnilでエラーになる。
 
pry(main)> country_name("JPN").length                                               
=> 5
 
pry(main)> country_name("JOR").length                                               
NoMethodError: undefined method `length' for nil:NilClass
 
この場合、country_nameといういかにもな名称なのできちんと文字列を返すほうが親切だよねとも言えるし、
(省略しているけど)どの条件にも合致しない=渡したidが不正、ということでエラーになるというのも正しい気がしてくる。
悩ましい・・・。