読者です 読者をやめる 読者になる 読者になる

読書記録(レガシーコード改善ガイド7章)

どーもpanjaです。
少し前からレガシーコード改善ガイドを読んでます。

レガシーコード改善ガイド

レガシーコード改善ガイド

文章の流れが少しわかりづらい箇所もありますが、普段C++で開発している私にとっては例は理解しやすく内容も文句なしです。

さて、今回は本書の「第7章 いつまで経っても変更作業が終わりません」を読んで思ったことを書いてみたいと思います。

この章では以下が述べられています。

  • どんなに綺麗にメンテナンスされているシステムでもコード量が増えてくると変更すべき場所を見つけるのは大変。
  • レガシーシステムの場合は変更自体も大変。(コーディングはすぐ終わるかもしれないけど、テストがないので既存の振る舞い含め確認に時間がかかる)
  • テストが揃っている環境だとしても、変更に対するフィードバックを素早く(5秒以内!)得る必要がある。
    • そのために必要なことは、システムの全てのクラスやモジュールを独立してテストハーネス(GoogleTestなどのテストフレームワーク)上でインスタンス化出来るようにすること
      • 例えばインターフェースの抽出とかで実現できるけど、具体的な手法は「アジャイルソフトウェア開発の奥義」に書いてあるよ!

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

こんなとこでしょうか。
ちげーよそんなこと書いてねーよ。お前間違ってるよ。
などなどご意見ありましたら是非コメントお願いします。


私は普段boostなどを使って開発しているので、そりゃあもうビルドは時間がかかります。が、そんなこと言ってても始まらないので依存箇所を出来るだけ小さく出来ないかなど考えることは色々ありそうです。
また、クラスの依存関係を調べるツールを使って既存のクラスがいかに単独でインスタンス化出来ないかも調べてみようと思います。C++で使える便利なツールをご存知の方はぜひぜひ教えてください!