Scheme脳に偏った変なコーディングについて
私はRubyでプログラミングする時、次の様にRubyらしからぬコーディングスタイルを取る。(仕事では同僚とコード共有するのであまりやらないけど)
-
- return は書かない 最後の評価値がそのブロックまたはメソッドの戻り値なので、あえてreturnを書く必要なし。
-
- 内部関数を定義する methodの内側にローカル関数を定義したい時は lambdaを使って関数定義する。 どこかのrubyバージョンからdefをネストで定義できる様になったんだっけかな?
-
- 配列に対しての破壊的操作を避ける。
このような書きかたをするなら
newArr = [] arr.each { |x| newArr.push( hoge( !x )) end
代わりにmapやselect等の高階関数を使って次の様に書く(関数型スタイル)
newArr = arr.map{ |x| hoge( x ) }
- 配列に対しての破壊的操作を避ける。
このような書きかたをするなら
たぶん 3番 は万人に許容されると思うが、1,2番 はダメという人もいるだろう。 昔あるお客さんが書かれたサンプルコードで 1,2番 が使われているのを見てうちの社員がうげぇーとなっていたっけ。 Javaのような平均的なプログラミング言語に慣れた人には、ちょっと受けいれられないのだろう… そうそう、JavaScript + Prototype.jsの組合せでも同じようなスタイルでプログラミング出来るよ。