リファクタリング:ミッション(un)実行可能?

プロジェクトのソースが沼地に似ており、長期にわたって住む予定がある場合はどうすればよいですか? プロジェクトのソースコードをリファクタリングすることは、問題に対処するための2つの選択肢の中で最も利益があります。 2番目の選択肢-すべてを捨てて再び書き換える-は、通常、さまざまな理由であなたに合っていません。



そして、どこから始めたらいいのかわからなくても、このリファクタリングを行う方法は? 大量のコードを排出して、drれさせない方法は?



もちろん、プロジェクトのアクティビティの1つを最初からリファクタリングすることを検討し、チームにプロジェクト時間を割り当てることが理想的なオプションです。 しかし、奇妙なことに、ほとんどの場合、前のプロジェクトリーダーはこの問題にあまり困惑せず、フローを使用することを好みました。 おそらく、彼はいつかこの負担を恵まれないリーダーにもたらすことを望んでいた-プロジェクトが崩壊するまで。 または何をすべきか分からなかったかもしれません。 シェフ、口ひげがなくなった!



どうやってやるのか教えてあげましょう。



ルール番号1:リファクタリングはプロセスです。 したがって、まず、1週間か2週間で「自分を傷つける」ように変換することはできないと考えて、友達を作る必要があります。 この事実に気づいた後、M。Fiesersの本「レガシーコードを使用した効果的な作業」(レガシーコードを効果的に使用する)を取り上げ、それを理解し始めます。 同時に、使用するソース管理に精通していることを確認し、コードを順番に並べた本を読むことと並行して(主要な「クリーニング」)、コメントアウトされたコードと「デッド」コードを削除します。プロジェクト内に場所はありません。 ファイルで「おridge」を構成します。 コーディング規約に沿ってみましょう。 この段階では、より深刻な変更を行わない方が良いでしょう。 単体テストを書くことができる場合、それについて考える必要があります(しかし、この段階で書くことは通常役に立たないので、次のことまで我慢しましょう:)。



ルール番号2:頭の周りのソース管理 。 ブランチとは何人なのかわからない人がいると笑うでしょう。 ソース管理に関する十分な知識は、多くの変更の一部が「人生と互換性がない」場合にプロジェクトを完全にハッキングしないようにするのに役立ちます。 そのような状況では、ロールバックのみがロシア民主主義の父を救います。 Sobsna、SvnBook tytsの有名な作品、特にブランチについては、たとえsvnがなくてもお勧めします。 また、ソース管理、アジャイル、タイツのスライドをオンラインで検索することもできます。 ソース管理に関する多くの楽しみがここに書かれています



ルール番号3:ルーチンを自動化する、それは兆候です-幸運を祈ります:)これは、ワンクリックでプロジェクトを組み立てられるように、何らかの種類の自動ビルドシステムを装備する必要があるという点です。 そのようなシステムは本当に道徳にとってプラスです。なぜなら、スタジオから手でプロジェクトを構築する必要があり、ネットワーク上の奇妙な共有フォルダーの複雑なシーケンスでアーティファクトを30分コピーしなければならない状況に頻繁に遭遇し、この状況はその後、変更します。 CruiseControlを長期間使用しました(推奨)。TFSのTeamBuild(パーティーポリシー)を使用しましたが、重要ではありません。コンソールから起動するmake / ant / nantが起動に役立ちます。



本が読まれる頃には、少なくともソースから気分が悪くならないように、また再構築しやすいように、コードベースはまともに見えるはずです。 もちろん、プロジェクトの美しさを感じるにはまだほど遠いですし、建築は足が不自由ではありません-ほとんど歩いていない:)



ルール番号4:小さいが、良いスタート 。 つまり、プロジェクトで作業するためのさらなる戦略は次のとおりです。現在作業しているプロジェクトの部分で、すべてが「あるべき」状態になる「サンドボックス」を選択します-残りのコードから分離し、_good_-OOP、ベストプラクティスを書きます手に。 単体テストが非常に望ましいです。 かなり-よく目を向けた目と正直な言葉でリファクタリングすることは決してないよりも良いからです:)



コードを記述すると、サブシステムが何らかの方法で残りのコードにアクセスする必要があることが明らかになります。 このインタラクションサーフェスを別のAPIで選択し(.netの場合、たとえば、コードが古いクラスと対話するメソッドを通じて静的クラスを作成します)、ユニットテストも記述します。 私たちは徐々にそれを取り除くので、それを正確に作る方法とどれだけきちんと原則がありません。 「美しい」コードがこのAPIで正常に機能し、このAPIのテストがあると、詳細なテストを続けながら、読んだ本に従って、そのAPIを見て、その背後にある既存の「肉」をリファクタリングできます。 私が言及した本では、独自のサンドボックスから始めて、既存の(悪い)コードに機能を追加しない場合に役立つトリックについても説明しています。

一般に、 ルール5はここからスムーズに流れます(結局のところ、沼地です!) ルール5:動作する場合は触れないで、単体テストを書いてから破ってください 。 そして、もし私たちのコードがなんとかそこに登ったら。



一般に、「遠くから」プロジェクトの高貴化のプロセスは、塩水の結晶化のように見えるはずです。小さなポイントから始まり、プロジェクト全体を徐々にカバーし、それを部分に分割して、「結晶化」します。 あなたの「サンドボックス」は、すべてが始まるこの小さなポイントになります。 ルール6:分割して征服する-つまり それを理解し、修正し、変更します。



私はほとんど忘れていました-あなたの長い(heしないで;)方法の各段階で、自動コード分析ツール-(ビジュアル).NET /モノ、シミアン、あらゆる種類のラインカウンターなどのためのNDepend、FxCop、Gendarme(たとえば、lintが便利です) C / C ++の場合)。 Java、PHP、および他の仲間は必要なものを入力できます。



すべてがそうです。

コメントでは、リファクタリングによってbydlokodをタキシングする方法を確認したいと思います。有用な情報を隠すものは何もありません。



All Articles