Screaming Loud

日々是精進

CodeKata 8:目的の衝突

CodeKata和訳シリーズ。
今回はCodeKata: Kata Eight: Conflicting Objectivesを訳します。


なんでコードを書くのだろうか?その一つとして、特定の問題を解決するためだろう。それに付随して世界に価値を提供できるということもある。しかし、それは本質的な回答ではない。コードは問題を解決しなければならないし、実行速度も速く、メンテナンスや拡張やその他も簡単でなければならない。では、見ていこう。

このKataでは、シンプルな問題を解くプログラムを作ってみよう。そして3つの違う目的でそのプログラムを作ってみよう。前のKataで使ったwordlist.txtを今回も使ってみよう。今回は、2つの小さい単語が繋がっている6文字の単語を探そう。例えば、

al + bums => albums
bar + ely => barely
be + foul => befoul
con + vex => convex
here + by => hereby  
jig + saw => jigsaw  
tail + or => tailor  
we + aver => weaver


上のコードを3回書いてみよう。

  • 1回目は、読みやすく書いてみよう
  • 2回目は、できるだけ実行速度が速いコードを書いてみよう。
  • 3回目は、できるだけ拡張がしやすいコードを書いてみよう。

3つを書いたら見返してみよう。3つの作る目的を変えたコードをどう思っただろうか?
例えば、出来る限り速いコードは、読みやすくなったか?それは拡張しやすかったか?読みやすいコードは速かったか遅かったか?拡張しやすかったかしにくかったか?
また拡張しやすいコードは、速いか遅いか?読みやすいか読みにくいか?
3つの中で関連が強いものはあるか?
自分にとってコードの最適化とは何を意味するのか?考えてみてくれ。