LoginSignup
1

More than 5 years have passed since last update.

実装の手順 > 機能の削除 (拡張機能追加を見据えて)

Last updated at Posted at 2017-08-02
動作環境
C++ Builder XE4

背景

機能XX1を拡張して機能XX2を作ることになったとする。
実際には機能XX1の拡張では対応しきれず、新機能を追加するような状況だとする。

以下の作業が必要となる。

  1. 機能XX1の削除
  2. 機能XX2の追加

機能XX1の削除

どのように削除するか。

削除手順 > 成功編

  1. 関連する関数、変数、配列などの洗い出し (プロファイリング?)
  2. Gitで削除作業としてのfeatureブランチを切る (feature/170801/removeXXX)
  3. 項目(関数、変数、配列)の削除順番の検討
    • 作業が小さくまとまりやすいものを優先する
  4. 一つの項目を削除ごとにgit commit
  5. 4の作業を繰り返す
  6. 全項目の削除後にbranchをmasterへマージ
    1. no fast-forwardマージにしておくことで将来的にブランチ名と関連コミットが参照しやすくなる

こうすることで、機能XX2追加時に機能XX1の機能をGitログで確認もできる。

また、手順1にてプロファイリングしておくことで、機能XX2追加設計時の参考にもなる。

削除手順 > 失敗編

  1. 削除対象の主となるフォームコンポーネントを削除する
    1. IDEのエラーを誘発するという目的
  2. IDEのエラーを対応する
  3. 2の手順をエラーがなくなるまで繰り返す

機能を削除はできるが、関連機能の構造の情報が実装者に残らない。
(詳細設計資料の最新版がきちんと管理できていれば不要ではある)

また、関数の削除時に詳細を把握しておかないと、削除漏れが発生する可能性がある。

その他 > 「削除しないでなんとか拡張しようぜ!」編

機能XX1から強引に機能XX2にする方法。

glueコードでなんとか実装できるかもしれない。

数年後にそのプロジェクトの保守・機能変更時に「この分かりにくい構造はなんだ!(過去の自分への失望)」となる可能性が考えられる。

技術的負債が増加する方法であり、お薦めできない。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1