kiyokaのブログアーカイブ

Archive of old blog posts

Scheme脳に偏った変なコーディングについて

私はRubyでプログラミングする時、次の様にRubyらしからぬコーディングスタイルを取る。(仕事では同僚とコード共有するのであまりやらないけど) img

    1. return は書かない 最後の評価値がそのブロックまたはメソッドの戻り値なので、あえてreturnを書く必要なし。
    1. 内部関数を定義する methodの内側にローカル関数を定義したい時は lambdaを使って関数定義する。 どこかのrubyバージョンからdefをネストで定義できる様になったんだっけかな?
    1. 配列に対しての破壊的操作を避ける。 このような書きかたをするなら
       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の組合せでも同じようなスタイルでプログラミング出来るよ。