web-dev-qa-db-ja.com

神ファイル対ラビオリコード

最近、コードをリファクタリングする必要があるかどうかについて質問しました。私が受け取った応答は、間違いなく、God Fileが存在するため、リファクタリングを通過するキャンプにありました。

しかし、今私が恐れているのは、ラビオリのコードに向かっている。私は約6〜7個の ".c"モジュール(完全に管理可能であると思います)を用意しますが、おそらく約10個の ".h"ヘッダーを持つようにプッシュしています。

また、解析して独自の部分にリファクタリングする必要がある約8000行のコードがまだあり、さらにいくつのヘッダーが必要になるかさえわかりません。私はおそらくいくつかのヘッダーを凝縮して組み合わせるでしょうが、私の質問は次のとおりです。

ソフトウェアの保守性の観点から、モジュールが多すぎる(定義を見つけて変更するのが難しくなる)可能性がある、またはファイルが少ない可能性があるが以前の問題を回避しているが、過剰な機能で肥大化しているという点で何が悪いですか? 12k以上のコード行のために私の問題は避けられませんか?それとも、システムのサイズを不均衡に吹き飛ばしているだけなのでしょうか?

5
ardent

ソフトウェアの保守性の観点からさらに悪いことは、モジュールが多すぎる可能性があることです(定義を見つけて変更するのが難しくなります)

これは本当に問題ではありません。適切なIDEは、呼び出しから定義、または定義からすべての呼び出しのリストにすぐに移動できます。IDEを使用しない場合でも、まともなエディタは ctags または同様のツールのサポートを提供する予定です。

コードを整理して、論理的な構造を強調し、関心事の分離を強制するとします。

13

大きなファイルが望ましい場合がありますが、最も簡単なのは壊れていない間は修正しないでください-10,000行のファイル重大なバグが報告されておらず、変更のリクエストや計画もないため、1人にしておく価値は十分にあります。

それ以外は、エディター/ IDEで2〜3、さらには1画面を占めるものを優先してタイブレークします。

それは神のファイルのチャンスを残しません。 50個の小さなファイル(それぞれ50行ずつ)は、コードの保守担当者が定義を見つけて変更するのが難しい場合がありますが、少なくとも

  • 1つの1280x1024画面に50個のファイル名をすべてリストし、これらを凝視し、これらについての理由
  • 特定の50行のファイルの内容を1つの画面に表示し、それをじっと見つめ、その理由を説明する

何だと思う?メンテナは、そのようなファイルの2〜3をより大きなファイルにマージして、理解が向上するかどうかを確認し、ロールバックする方がよいと判断した場合は、マージされたファイルを(魔法のように)分割することもできます。

同じ量のコード(50x50 = 2500行)については、その半分未満でさえ、1つのファイルに1000行ありますが、メンテナがそれを凝視して推論することはできません。

http://i.stack.imgur.com/jxR8c.gif

忘れてはならないことの1つは、コードを小さな部分に分割しても、自動的にそれがうまくいくわけではないということです。

ひどいコードを50行ずつ、50ファイルに含めることができます。メンテナは特定の50行を見て、これらががらくたであることに気付くことができます。しかし、メンテナができないのは、1000行を見て、何でも実現することです。まったく何もありません。

50行50行のファイルは難しいかもしれませんが、依然として管理可能です。 2500行は管理不能であり、難しいだけでなく、処理することも不可能です。

5
gnat

とても簡単です。 God Filesは、目的のコードをすばやく見つけることができるような、それらをナビゲートする安価な方法に関する合意がないため、悪い習慣と見なされています。

コードを複数のファイルに分割することで、一般的によく知られている非常に安価で高速な方法を使用します。これは、すべてのIDE=でサポートされているため、誰でも目的のコードをかなり速く見つけることができます。

God Fileをナビゲートするための独自の方法を開発するとき、おそらく同じレベルの拡張性でも、コードを調べているサードパーティが同じようにナビゲートすることは依然として問題です。あなたの方法論がわからない。

0
Ini