今日はCodeKata: Kata Four: Data Mungingを訳します。
タイトルの「マンジング」(munge)は、あるデータを見慣れないものに変換するということらしいです。
mungeの意味 - 英和辞典 Weblio辞書
Martin FowlerはKata2という難しい問題を出してくれたが、Yet anotherな関数であるし、勉強っぽい練習だとグチをこぼしていた。まぁどっちもそうだね。ってことで、今週は問題を少し混ぜてみよう。
現実の世界のデータを使って3つの練習問題を作った。頑張って先に読むんじゃなくて順番に解いていこう!
パート1:天気データ
weather.dat にNJのMorristownの2002年6月の日別天気のデータが入ってる。このテキストファイルをダウンロードしてから、最低気温の日(1列目)を出力するプログラムを書こう。(最高気温は2列目、最低気温は3列目)
パート2:サッカーリーグのデータ
soccer.datには、2001年のイングランド・プレミアリーグの結果が入っている。その列は「F」と「A」でラベルがつけられ、これは対戦チーム同士の各総ゴール数を表している。(だから、アーセナルは敵に対して79得点36失点となる)
このデータから得失点差が最小のチームを判別するプログラムを書こう。
パート3:DRY Fusion
上で書いた2つのプログラムを出来る限り一般的な形に分解してみて、2つのより小さなプログラムへ直して共通の関数を作ってみよう。
Kataの質問
- 最初に書こうと決定したコードの構成を分解するのはどれくらい簡単だったか?
- 1回目に書いたコードは2番目に書いたコードに影響を与えたか?
- 毎回汎用性のあるコードを書こうとすることはいいことか?汎用性をコードに求めることによってプログラムの信頼性は落ちたか?デバッグはどうだったか?