コードのどの部分を次に統合/リファクタリングするかをどのように決定しますか?
-
09-09-2019 - |
質問
コードのどの部分 (クラス、モジュール、ライブラリ) を次に統合またはリファクタリングするかを決定するために、何らかの指標を使用していますか?
解決
私は自動的に計算することができます任意のメトリックを使用していません。
私はコードが不正なコードを検出すると同様の経験則を匂い、そしてその後、私はよ使用しますすぐに私はそれに気づいたとしてそれを修正。私は問題を見ているため任意のチェックリストを持っていない - 大抵それは「このコードが乱雑に見える」と感じ、その後、なぜそれが厄介であることを推論し、解決策を考え出す腸です。変数に、より説明的な名前を与えるか、抽出方法のような単純なリファクタリングは、ほんの数秒かかります。そのようなクラスを抽出するなどのより集中的なリファクタリングは、(私はTODOのコメントを残し、後でそれをリファクタリング可能性がある場合には)時間か2までかかることがあります。
私が使用して一つの重要なヒューリスティックは、シングル責任の原則のです。これは、クラスがきれいにまとまります。いくつかのケースでは、私はクラスが複数責任を持っているかどうか、より慎重に探してヒューリスティックなどのコードの行でクラスのサイズを使用します。私は、Javaを書くとき、クラスのほとんどが100本の未満の線になることに気付きましたの私の現在のプロジェクトで長く、そして多くの場合、サイズは200行に近づくと、クラスは多くの無関係なことを行い、より集中まとまりのクラスを取得するように、それを分割することが可能である。
他のヒント
私は似た何かをすでに既存のコードを検索し、新しい機能を追加する必要があるたびに。私はそのようなコードを見つけたら、私は元のタスクと新しいものの両方を解決するために、それをリファクタリングを考えます。確かに私は毎回リファクタリングすることを決定していない - それがあるとして、ほとんどの場合、私は、コードを再利用
。私は通常、「オンデマンド」でのみリファクタリングします。コードに具体的な即時的な問題が見つかった場合。
新しい機能を実装したりバグを修正したりする必要がある場合、次のような現在のコード構造ではそれが困難であることがよくあります。
- コピー&ペーストのせいで変更箇所が多すぎる
- 不適切なデータ構造
- 変更する必要があるハードコーディングされたもの
- メソッド/クラスが大きすぎて理解できない
それからリファクタリングをします。
問題がありそうなコードを変更したいと思うことがありますが、その領域が現在作業されていない場合は、その衝動を抑えます。
私はリファクタリングを、コードの将来性を保証することと、実際にはすぐには価値を生み出さないこととの間のバランスをとることだと考えています。したがって、具体的なニーズが見られない限り、通常はリファクタリングしません。
リファクタリングを日常的に行っている人の経験談を聞きたいです。磨きすぎて重要な機能に時間を費やすことをどうやって止めることができますか?
私たちは、次のリファクタリングする必要のあるコードを識別するために Cyclomatic_complexity に使用します。
私はソースモニタを使用し、複雑さメトリックがaboove 8.0付近になったとき、日常的な方法をリファクタリングます。