8

一部のレガシー C++ および C# コードを維持するのがいかに難しいか、およびそれにバグを導入するリスクの概要を取得しようとする際に、変数のスコープがどれだけ広いか狭いかを測定することが役立つことが示唆されています。コードは、多くのグローバル変数、または広範囲の変数を使用していますが、ローカル変数の方が優れています。よくあるのは、これらの変数が宣言されている場所からいくつかのスコープ レベルの 2 ~ 3 行のコードに使用されていることです。

静的コード分析ツールは通常、結合と結束を定量化しようとしますが、変数/データ範囲をより具体的に測定するものはありますか?

4

3 に答える 3

2

はい、それは静的分析の標準的な手法です。それは変数活性の分析と呼ばれます。本書では、導入事例でこのような分析を行っています。

それに関するウィキペディアの記事から:

コンパイラ理論では、ライブ変数分析 (または単にライブネス分析) は、コンパイラによって実行される従来のデータ フロー分析であり、各プログラム ポイントについて、次の書き込みの前に潜在的に読み取られる可能性のある変数、つまり、次の時点でライブである変数を計算します。各プログラム ポイントから終了します。

簡単に言うと、将来必要になる可能性のある値を保持している場合、その変数は有効です。

于 2013-01-15T10:24:09.930 に答える
0

オブジェクト指向言語(Java、C#、C ++)のローカル変数に集中します。ローカル変数のスコープに関しては、いくつかの対策が考えられます。

ローカル変数のスコープサイズ
は、ローカル変数にアクセスできるステートメントの数です。これはメソッドが長すぎることを示しているため、大きすぎないようにする必要があります。ただし、これにはメソッドステートメントの数がより適切な測定値になる可能性があります。

アクセス可能なローカル変数
の数は、メソッドの各ステートメントのアクセス可能なローカル変数の数です。これは、式で使用するローカル変数の選択をより困難にするため、3より大きくすることはできません。

ローカル変数の使用密度
は、ローカル変数にアクセスするステートメントと、ローカル変数にアクセスできるステートメントの割合です。低い値は、メソッドの一貫性が低いことを示します。

ローカル変数カウントのコヒーレント変更は
、同じブロック内のローカル変数の変更の数です。これは、複数のローカル変数が一緒に属していることを示しています。したがって、それらは独自のオブジェクトを形成し、それによって一貫性を高める必要があります。

于 2013-01-15T13:25:30.693 に答える