kiyokaのブログアーカイブ

Archive of old blog posts

Scaleの関数プログラミングのアプローチについて(3)

しつこくScalaについて調べる。使うのはこの本。

Programming in Scala

著者: Martin Odersky, Lex Spoon, Bill Venners

第7章で「Refactoring imperative-style code」というタイトルを見つけたのでその章をじっくり読む。 varを見つけてはvalを使うコードに変換し、副作用のあるコードを排除し、ループ変数を使ったコードからimmutableなコレクションと高階関数の組みあわせに書きかえていくという内容。 ただ、どこまでもやったらリファクタリング完了なのかは書いていない。どこまでもやったら副作用の無いコードになったのかを確認する術も書かれていない。 やっぱりそんな仕組みは無いのかな。 自分は、ずっとそこに拘っているけど、一般人はそこまで拘るものでは無いのかなと思えてきた。「現場のプログラミングの世界ではそこまで拘っても別のところのコストの下にかくれて誤差の範囲になるんだよ」というような声が聞こえてくるような気がした。 しかーし、ここは気を取りなおして、副作用の無いコードと十分な件数のテストコードの安心感を体で知っている自分としては、とことん拘っていくつもりだ。 Scalaができていないなら[Nendo]が達成してやろうじゃないかというところだ。 もしそれがいいものであったら、べつの言語に輸出すればいい。

今回の調査ではScalaからは盗めなかったけど、[Nendo]は独自に考えてimmutable範囲チェックを実現してみたいと思う。