この環境でリファクタリングを困難にするために、いくつかの問題が混在しています。これには、非技術的な問題がいくつか混ざっています(「しかし、それは管理上の問題であり、まだ勝てない戦いです」)。
最初に確認する問題は、長時間実行されるブランチです。これらのブランチは、開発者の視点の外で変更を追跡するのが困難です。これに対処するには:
- コードが完成したら-もう一度やり直します(必要に応じてカスタマーサポートに調べてもらいます)が、それをすぐに開発にマージして、それに依存する他の変更をピックアップし、競合する変更を早期に特定できるようにします過程の中で。
- 何らかの理由で、リファクタリングの進行中にブランチが長時間実行されるようになった場合、stableからブランチにマージして変更とリファクタリングを取得することをお勧めします。多くの場合、これにより、機能ブランチから安定ブランチへのマージ時の競合や驚きが最小限に抑えられます。
- すべての統合テストは、機能ではなくリリースで実行する必要があります。この環境では、機能がシステムに完全に統合されている場合とされていない場合があります。機能の健全性チェックを単独で行うことは可能ですが、リリース時に問題を特定することはできません。
- コードの完了からマージ(開発と呼ぼう-マスター/安定/リリースからの分岐には、最新の開発変更が反映されないという独自の問題があります)が長すぎてはなりません。長く待つほど、失われる知識が増え、コードが他のコード行と統合されるのが難しくなります。
これにまつわるもう1つの問題は、上記のポイントでほのめかしたのは、ブランチの役割が時間とともに変化することです。開発者がコミットする開発ブランチとして開始され、次にテスト領域(アプリケーション全体で意味のあるテストがここで行われていますか?)になり、その後安定版にマージされます(そしておそらくリリースされます)もう一度テストしましたか?)。
機能の開始から終了までの時間を短くすると、リファクタリングを他のブランチで簡単に選択できるようになります。
開発者に環境全体を取得するように勧めます。ちょっと変わった変更を行うだけで、興味深い開発者環境を実現できます。チェリーピッキングには用途がありますが、それが変更をブランチにプルするデフォルトモードであることが気になる場合があります。
リファクタリングは、理想的には絶えず行われるものであり、ダウンタイムが少しある場合は常に行われます。ブランチ、簡単なリファクタリングを行い、ユニットテストを実行してすべてがまだ機能していることを確認し(そのユニットをテストしました?)?リファクタリングした変更を自分のブランチにプルするために、他の開発者に情報を渡します。
開発者がコードの品質を所有することは重要です。機能の方向は外部からのものであり、時間の割り当ては多くの場合私たちのものではありませんが、コードの品質は誇りを持ち時間を作るために必要なものです。
技術的負債に対処するための時間を割り当てるための探求では、次の質問が役立つことがあります。
また、リファクタリングに最も作業が必要なコードの領域を特定するのに役立つソナーなどのツールを参照することもできます。技術的負債のプラグインは、コードベースに時間をかけて債務の累積手伝っポイントに使用することができるものです。
多くの場合、技術的な負債を処理するためのROIは、開発チームからの機能とバグ修正のためのより速いターンアラウンドタイムであることを指摘する必要があります。