開発者の生産性の観点から、コードベースのリファクタリングに費やした時間は、長期的に見て価値がありますか?
クリーンで適切に設計されたシステムを変更することは、設計が不十分なシステムで作業するよりもはるかに単純かつ高速であることは私にはかなり明らかですが、確かな証拠があります。このトピックに関する研究はありますか?
開発者の生産性の観点から、コードベースのリファクタリングに費やした時間は、長期的に見て価値がありますか?
クリーンで適切に設計されたシステムを変更することは、設計が不十分なシステムで作業するよりもはるかに単純かつ高速であることは私にはかなり明らかですが、確かな証拠があります。このトピックに関する研究はありますか?
回答:
経験的に、循環的複雑度などのより複雑なメトリックを持つソフトウェアは、維持が困難です。1970年代にさかのぼるこのことを裏付ける研究があります(「プログラムの複雑さとプログラマーの生産性」、ETチェン)。システムのサイズに対するサイクロマティック複雑度である複雑度密度もメンテナンス時間(「サイクロマティック複雑度密度およびソフトウェアメンテナンス生産性」、GK Gill、CF Kemerer)にも関連していることを示唆する研究もあります。残念ながら、Chenの論文にはIEEEサブスクリプションが必要ですが、興味がある場合は、他のソースで調べてみることができます。
品質の観点からは、新しい欠陥の導入を防ぐためのテストフレームワークがあることを前提として、リファクタリングに時間をかけることはしばしば価値があります。これにより、システムに新しい機能をより簡単に実装し、テストを追加し、新しい開発者が作業できるようにトレーニングできます。
ただし、最終的には、新しい機能と付加価値を提供する必要があります。リファクタリングと新機能の実装および不具合の修復のバランスをとる必要があります。
私はいくつかの確かな証拠を求めています
その後、ここであなたの時間を無駄にしないでください。
保守にコストがかかるコードを見つけます。それは簡単です。組織のトラブルチケットを確認します。
保守が簡単なコードを見つけます。頻繁に実行されるが、トラブルチケットがほとんどまたはまったくないコードを見つけます。
広く利用されている複雑性ツールを使用して複雑性を測定します。
証拠を浴びる。
これで、明白であることを確認するための番号が提供されました。