スキップしてメイン コンテンツに移動

Saurus Legacy

レガシーコード改善ガイド (Object Oriented SELECTION)『レガシーコード改善ガイド』を読んだ、と言っていいものかどうか。ざっと全体は眺めたつもりだけれど、章を行ったり来たりしながら読んだので、飛ばしたところがないとどうも断言し辛い。

どうしてそんな読み方をしたのか、というと、本書の構成は線形じゃないから。第2部「ソフトウェアの変更」と第3部「依存関係を排除する手法」の各章の間にクロスリファレンスが張り巡らされていて、最初から順番に読んでいくと、説明なしにどんどん新しい用語が使われていく。とてもじゃないけれど、理解できない。

だから、第1部だけはざっと読んで概要を掴んだら、第2部「ソフトウェア」の変更の章タイトルを入り口に必要な範囲を読むのがいいと思う。実際、「序文」の「本書の使い方」もそう勧めている。各章タイトルがFAQのFAになっているから、自分が置かれている状況に近い章が、大抵は見つかるはず。

入り口となる第2部「ソフトウェア」の章タイトルは、次の通り。なかなかユニークなタイトルが並んでいると思う。
  1. 時間がないのに変更しなければなりません
  2. いつまで経っても変更作業が終わりません
  3. どうやって機能を追加すればよいのでしょうか?
  4. このクラスをテストハーネスに入れることができません
  5. このメソッドをテストハーネスで動かすことができません
  6. 変更する必要がありますが、どのメソッドをテストすればよいのでしょうか?
  7. 1カ所にたくさんの変更が必要ですが、関係するすべてのクラスの依存関係を排除すべきでしょうか?
  8. 変更する必要がありますが、どんなテストを書けばよいのかわかりません
  9. ライブラリへの依存で身動きが取れません
  10. 私のアプリケーションはAPI呼び出しだらけです
  11. 変更できるほど十分に私はコードを理解していません
  12. 私のアプリケーションには構造がありません
  13. 自分のテストコードが邪魔になっています
  14. 私のオブジェクトはオブジェクト指向ではありませんが、どうすれば安全に変更できるでしょうか?
  15. このクラスは大きすぎて、もうこれ以上大きくしたくありません
  16. 同じコードをいたるところで変更しています
  17. モンスターメソッドを変更する必要がありますが、テストを書くことができません
  18. どうすれば何も壊していないことを確認できるでしょうか?
  19. もうウンザリです。何も改善できません
章タイトルがユニークになるのは、そもそもこの本が取り扱っているテーマがユニークだからだ。そのテーマを一言で表すと、「ユニットテストがないコードを、いかにして保守するか?」だと思う。この本では、そのための大枠の手順として次の5ステップを示し、章タイトルに示す状況でそれをどう進めていくか解説している。
  1. 変更点を洗い出す
  2. テストを書く場所を見つける
  3. 依存関係を排除する
  4. テストを書く
  5. 変更とリファクタリングを行う
正直に言って、読みやすくはない。でも、2004年にこの本の原著が出版されてから9年、レガシーコードはいっかな減りそうにない。むしろ増えているんじゃないか、という気さえする。

というわけで、類書もないし手元に置いておこうと思う。

このブログの人気の投稿

北へ - ゴールデンカムイ 16

『ゴールデンカムイ 15』、『〃 16』を読んだ。16巻を読み始めてから、15巻を買ったものの読んでいなかったことに気がつく。Kindle版の予約注文ではままあること。 15巻は「スチェンカ・ナ・スチェンク」、「バーニャ(ロシア式蒸し風呂)」と男臭いことこのうえなし。軽くWebで調べてみたところ、スチェンカ・ナ・スチェンク (Стенка на стенку) はロシアの祭事マースレニツァで行われる行事のようだ[1]。それなりになじみ深いものらしく、この行事をタイトルに据えたフォークメタルStenka Na StenkuのMVが見つかった。 16巻では杉元一行は巡業中のサーカスに参加することになる。杉元と鯉登の維持の張り合いが、見ていて微笑ましい。鯉登は目的を見失っているようだが、杉元もスチェンカで我を失っていたので、どっこいどっこいか。なお、サーカス/大道芸を通じた日露のつながりは、実際にもこのような形だったようだ[2]。 個々のエピソードから視線を上げて、全体の構図を眺めてみると、各勢力がすっかり入り乱れている。アシㇼパは尾形、キロランケ、白石とともにアチャの足跡を辿り、そのあとを鶴見のもとで家永の治療を受けた杉元が鯉登、月島を追っている。今更だけれど、杉元やアシㇼパは、第七師団と完全に利害が衝突していると考えていないはずだった。一方で、土方一味も入墨人皮を継続。むしろ彼らの方が第七師団との対立が深刻だろう。さらに北上するキロランケはまた別の目的で動いているようだけれど、なんで尾形も一緒なんだっけ? 『進撃の巨人』に引き続き、これもそろそろ読み返す時期か。 [1] 5つの暴力的な伝統:スラヴ戦士のようにマースレニツァを祝おう - ロシア・ビヨンド [2] ボリショイサーカスの源流は、ロシアに渡った幕末日本の大道芸人たちにあった 脈々と息づく「クールジャパン」 | ハフポスト

戦う泡沫 - 終末なにしてますか? もう一度だけ、会えますか? #06, #07

『終末なにしてますか? もう一度だけ、会えますか?』の#06, #07を読んだ。 『終末なにしてますか? もう一度だけ、会えますか?』の#06と#07を読んだ。#06でフェオドールの物語がひとまずは決着して、#07から第二部開始といったところ。 これまでの彼の戦いが通過点のように見えてしまったのがちょっと悲しい。もしも#07がシリーズ3作目の#01になっていたら、もう少し違って見えたかもしれない。物語の外にある枠組みが与える影響は、決して小さくない。 一方で純粋に物語に抱く感情なんてあるんだろうか? とも思う。浮かび上がる感情には周辺情報が引き起こす雑念が内包されていて、やがて損なわれてしまうことになっているのかもしれない。黄金妖精 (レプラカーン) の人格が前世のそれに侵食されていくように。

リアル・シリアル・ソシアル - アイム・ノット・シリアルキラー

『アイム・ノット・シリアルキラー』(原題 "I Am Not a Serial Killer")を見た。 いい意味で期待を裏切ってくれて、悪くなかった。最初はちょっと反応に困るったけれど、それも含めて嫌いじゃない。傑作・良作の類いではないだろうけれど、主人公ジョンに味がある。 この期待の裏切り方に腹を立てる人もいるだろう。でも、万人受けするつもりがない作品が出てくるのって、豊かでいいよね(受け付けないときは本当に受け付けないけれど)。何が出てくるかわからない楽しみがある。