私はこのプロセスを数回経験しましたが、解決策には次のことを知っている必要があることがわかりました。
- これらを修正するという概念に政治的不安はありますか?
- これらのものがどのように見える/フォーマットされるべきかについて、現在受け入れられている標準はありますか?
- 素晴らしいテストケースはありますか?
政治的状況を緩和するのは最も困難であり、基本的には横方向の動きのアイデアを好む人は誰もいません。コードのフォーマットと命名規則を適用するプロセスを経ることは、非常に横方向の動きです。あなたがあなたの決定を正当化する確かな一連の測定基準を思い付くことができれば、あなたの横方向の動きは前方への動きになりすますことができます。ここでの最良の指標は、
「一貫したコーディング標準のセットにより、次の結果が得られます。-30%少ないバグ-30%速い開発-80%低いメンテナンスコスト-私たちのコーダーの100%は、この変更にはるかに満足しています。」
これらの数字を空中から引き出すだけではありません。これを正当化することができます。
現在プロジェクトに追加している人々から賛同を得ない限り、明らかにこの作業を開始する意味はありません。誰もが同意し、これらの理想を現在存在するコードにレトロフィットし始める必要があります。誰もがIDEを使用しているわけではないことを忘れないでください(たとえば、すべてのJavaをVIMでコーディングします)。したがって、この形式がすべての人(特に新しいチームメンバー)が見ることができるようにWikiで指示されていること、およびWikiページにさまざまなエディターのダウンロードがあることを確認する必要があります。使用中で。
コードのフォーマットだけでなく、変数の名前変更やパターンの変更についても話している可能性が高いため、これらはクラスのパブリックAPIに影響を与えるため、非常に安定したテストケースのセットを用意する必要があります。テストケースが欠落している場合は、常に外部から開始する必要があります。ユーザーと同じように相互作用するようにテストをモデル化します。その後、ある程度の自信を持ってリファクタリングを行うことができます。夢に似たコードができたら、各オブジェクトの近くにテストを追加できます。すべてのテストケースを作成してから、APIを変更し、すべてのテストケースを変更しなければならないことほど苦痛なことはありません。それが起こるのを見るたびに、テストカバレッジが大幅に低下します。