古いプロジェクトをクリーンアップするための良い方法は何ですか?


11

2年ほど前に書いたソフトウェアがいくつかあり、それに追加する機能が必要です。私など、それはひどい混乱にだことに気づき、私は周りのすべてを移動する衝動を持って、きちんとアップしましたIましたが、読んで再起動していないソフトウェアについての記事でジョエルを、その前方に最良の方法はいただきましたか!?


当時のどの決定に今日は反対ですか?

回答:


21

次の3つの基本オプションがあります。

  1. アプリがある場合は非常に小さい現実の混乱、再び起動すると、actuallあなたの最善の策かもしれません。

  2. リファクタリング

  3. 混乱を乗り越えて、追加機能をハックします。

通常、オプション(2)が最善の策です。

実際にリファクタリングをどの程度行うかは、投入するリソースと取得する値によって異なります。質問は次のとおりです。

  1. 利用可能な時間/予算は何ですか?
  2. 将来どの程度の修正が予想されますか?
  3. 他に誰がコードを見ますか?(つまり、乱雑なコードは評判を傷つけますか?)
  4. 他の誰かがコードを保守する予定ですか?
  5. どのリファクタリングツールが利用できますか?
  6. リファクタリングの経験は何ですか?
  7. リファクタリングからどのような経験が得られますか?
  8. どんな種類のリファクタリングが最もメリットをもたらしますか?
  9. どの自動テストが既に存在しますか?書く必要がありますか?
  10. どのくらいの手動テストが必要ですか?
  11. コードをそのままにしておくとどう感じますか?

私の経験では、リファクタリングセッション中に適切な混乱に陥るのは非常に簡単です。私が学んだ最も重要な教訓は次のとおりです。

  1. 一度に1つのことを行います。
  2. 小さな一歩を踏み出します。
  3. ソース管理を有効に活用します(頻繁にチェックインし、コメントを含めます)。
  4. 自動化されたリファクタリングツールを使用します。
  5. IDEを知っています。

6
また、壊れた状態が長すぎないように追加したいと思います。野心的な書き直し/再設計の最中に、多くのオープンソースプロジェクトが急速に死んでいくのを見てきました。機能しないプロジェクトは、やる気をすぐに殺します。
LennyProgrammers

2
絶対に。野心的な書き直し/デザインに関して、私はこれに何度も反則をしました。今、私は小さなステップで物事をしようとしています。この提案を回答に追加しました。
Kramii

また、テストが記述されていないものはリファクタリングしないでください。すべてを修正したいという衝動に抵抗し、新しい機能を追加するために変更する必要がある領域に集中するだけです。それが完了したら、残りをリファクタリングするためにどの程度追加の労力を費やすかを決定します。
TMN

1
@TMN:理想的には、はい。ただし、常に自動テストが必要なわけではありません。(1)コードが自動テストなしで開発された場合、リファクタリングを行うまでユニットテストを簡単にレトロフィットすることはできないかもしれません (3)自動リファクタリングツール+ IDE機能は、リファクタリングの結果としてコードが破損するのを防ぐのに役立ちます。
Kramii

2
追加します-ソース管理では、すべてのリファクタリングを別のブランチに配置します。これは、賢明な段階的および大ブロック比較を行うのに役立ちます。これは、物事がカスタードになった場合(非常に貴重な場合)に非常に役立ちます。
すぐに

5

新しい機能を安全に追加できるように、少なくともリファクタリングは十分です。すなわち、それをさらに悪化させないでください。残りはモチベーション、予算、時間の制約に依存しますが、混乱を完全にクリーンアップすることは、オリジナルを作成するよりも時間がかかることに注意してください。


1
これはもちろん有名なボーイスカウトルールです。常に、コードを見つけたときよりも良い状態にしておきます。
ヨルグWミットタグ

2

今回は物事を修正しながら、必ず文書化してください。次回コードを見ると、物事を思い出すのがずっと簡単になります。


1

それは、それが混乱であるためにそれを維持するのにより多くの時間を費やすか、それが混乱でなく、容易に維持されるようにそれを書き直すかによって異なります。私は個人的に古いコードはがらくたの山だったので、それがされたので、私は(私が書いたこと)ASP.Net MVC3にイントラネットサイトを変換しています、今、この権利を通じてつもりだはず使い捨てであることを(はい、私はよく知っている必要があります)。古いがらくたの山はまだここにあり、それは機能を追加しバグを修正する頭痛の種です。MVCは美しく、それに取り組むことが実際に楽しくなるので、書き直されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.