PHPのローカル変数酷使度を計測する方法を変更しました(もういちど大きめの仕様変更)
2025/03/19

PHPのローカル変数酷使度を計測するツールを作ってます。
昨日、変数の代入による重みづけをする仕様変更をしたのですが、再度変更しました。
偏差を求めるのに行番号の平均からの偏差を求めているが、最初の出現位置からの偏差にした方が目的に合っているのではないかと考えました。 代入による係数を導入したのですが、変数の使用の最初の行で代入を行なっていることは自然であり当然なので、先頭行の代入によるペナルティは不要です。 先頭は距離0になるので代入による係数が無視される方が合理的であると判断しました。
VariableHardUsage の計算方法
VariableHardUsage
は、関数内でのローカル変数の使用頻度とスコープの広さを評価するための指標です。この指標は、同一変数への参照箇所の行番号の分散と、変数が代入される頻度に基づいて計算されます。
計算手順
- 同一変数への参照箇所の行番号を取得:
- 関数内で使用される各変数について、その変数が参照されるすべての行番号を取得します。
- 最初の出現位置を基準に偏差を計算:
- 各参照箇所について、行番号とその変数の最初の出現位置の行番号との差を計算します。
- 代入による係数の適用:
- 変数が代入される場合、その差に係数(デフォルトでは2)を掛けます。これは、代入が変数の使用頻度に与える影響を考慮するためです。
- VariableHardUsage の計算:
- これらの偏差の値をすべて合計することで、
VariableHardUsage
を求めます。
- これらの偏差の値をすべて合計することで、
例
例えば、関数内に3つの参照箇所があり、それぞれの行番号が10, 20, 30で、代入が行われる場合と行われない場合があるとします。この場合、最初の出現位置の行番号は10です。
- 参照A: 行番号10, 代入あり
- 参照B: 行番号20, 代入なし
- 参照C: 行番号30, 代入あり
この場合、VariableHardUsage
は以下のように計算されます。
- 参照A:
(10 - 10) * 2 = 0
- 参照B:
(20 - 10) * 1 = 10
- 参照C:
(30 - 10) * 2 = 40
これらを合計すると、VariableHardUsage
は 0 + 10 + 40 = 50
となります。
このようにして、VariableHardUsage
は変数の使用頻度とスコープの広さを評価する指標として計算されます。この指標を用いることで、関数内でのローカル変数の使用状況を定量的に評価し、コードの可読性や保守性の向上に役立てることができます。