コードの複雑さと開発者の生産性の間には相関関係がありますか?


10

開発者の生産性の観点から、コードベースのリファクタリングに費やした時間は、長期的に見て価値がありますか?

クリーンで適切に設計されたシステムを変更することは、設計が不十分なシステムで作業するよりもはるかに単純かつ高速であることは私にはかなり明らかですが、確かな証拠があります。このトピックに関する研究はありますか?


参照してください。再構築を
hakre

1
自分で混乱を維持し始め、裁判官になります。
TulainsCórdova2013

回答:


16

経験的に、循環的複雑度などのより複雑なメトリックを持つソフトウェアは、維持が困難です。1970年代にさかのぼるこのことを裏付ける研究があります(「プログラムの複雑さとプログラマーの生産性」、ETチェン)システムのサイズに対するサイクロマティック複雑度である複雑度密度もメンテナンス時間(「サイクロマティック複雑度密度およびソフトウェアメンテナンス生産性」、GK Gill、CF Kemerer)も関連していることを示唆する研究もあります。残念ながら、Chenの論文にはIEEEサブスクリプションが必要ですが、興味がある場合は、他のソースで調べてみることができます。

品質の観点からは、新しい欠陥の導入を防ぐためのテストフレームワークがあることを前提として、リファクタリングに時間をかけることはしばしば価値があります。これにより、システムに新しい機能をより簡単に実装し、テストを追加し、新しい開発者が作業できるようにトレーニングできます。

ただし、最終的には、新しい機能と付加価値を提供する必要があります。リファクタリングと新機能の実装および不具合の修復のバランスをとる必要があります。


2
追加するもう1つのポイントは、リファクタリングするときに、機能をより良い/より効率的な/よりクリーンな方法で実装する可能性が高いことです。「コードが「良い」と思ったと5年間でうんざりするだろう」という結果が何度も聞こえてきました
ウォーレン

1
@hakre私はこれを何度も投稿したとき、Google Web検索とGoogle Scholarの両方を使用して確認しました。当時私が最初にこの投稿を書いたとき、どちらの紙も購入せずに入手できませんでした。しかし、それ以来、1人の論文が著者の1人に属しているように見えるピッツバーグ大学のドメインに投稿されており、私はそれにリンクを追加しました。他の論文は無料で入手できません。投稿の本文にタイトルを追加して、検索を少し簡単にしました。論文を読みたくない場合は、私の分析と私の知識と経験を組み合わせて受け入れる必要があります。
Thomas Owens

0

私はいくつかの確かな証拠を求めています

その後、ここであなたの時間を無駄にしないでください。

  1. 保守にコストがかかるコードを見つけます。それは簡単です。組織のトラブルチケットを確認します。

  2. 保守が簡単なコードを見つけます。頻繁に実行されるが、トラブルチケットがほとんどまたはまったくないコードを見つけます。

  3. 広く利用されている複雑性ツールを使用して複雑性を測定します。

  4. 証拠を浴びる。

これで、明白であることを確認するための番号が提供されました。


5
あんまり。ソフトウェアによって実行されるタスクの複雑さは、選択した実装によって引き起こされる追加の複雑さと区別する必要があります。
reinierpost 2013年

4
-1回答ではありません
デイブヒリアー2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.