私は明確で清潔で簡潔なレガシーコードをいくつか持っています。そのレガシーロジックの多くは、配列の使用にあります。このコードのようにここに:リファクタリングPHPレガシーアレイ
if (isset($statistics[$lowerInstance])) {
$statistics[$lowerInstance][$size]['count'] += $items[$lowestType]['count'];
$statistics[$lowerInstance][$size]['amount'] += $items[$lowestType]['amount'] + (($items[$highestType]['amount']/$items[$highestType]['count']) * $items[$lowestType]['count']);
} else {
$statistics[$lowerInstance][$size]['count'] = $items[$lowestType]['count'];
$statistics[$lowerInstance][$size]['amount'] = $items[$lowestType]['amount'] + (($items[$highestType]['amount']/$items[$highestType]['count']) * $items[$lowestType]['count']);
}
if (isset($statistics[$higherInstance])) {
$statistics[$higherInstance][$size]['count'] += $items[$highestType]['count'] - $items[$lowestType]['count'];
$statistics[$higherInstance][$size]['amount'] += $items[$highestType]['amount'] - (($items[$highestType]['amount']/$items[$highestType]['count']) * $items[$lowestType]['count']);
} else {
$statistics[$higherInstance][$size]['count'] = $items[$highestType]['count'] - $items[$lowestType]['count'];
$statistics[$higherInstance][$size]['amount'] = $items[$highestType]['amount'] - (($items[$highestType]['amount']/$items[$highestType]['count']) * $items[$lowestType]['count']);
}
これは、この特定の方法のほんの一部です。
私はそれをより明確にして扱いやすくする方法がいくつかあります。多次元配列をArrayAccess型オブジェクトに移動するのは簡単ではありません(私は思う)。
多次元配列をリファクタリングする一般的な方法、またはそれを行う方法の例がいくつかありますか?この特定の問題だけでなく、PHP多次元配列の地獄を扱うより一般的な方法ですか?
コアは次のようにする必要があります。1)*このコードが達成すべきものを理解する*。 2)古いクラップコードを置き換えて、あなたができる限り、できるだけ上手にそのタスクを再実装してください。もちろん、古いコードの一部をゆっくりと新しいものに置き換えることで、ここからそこへと徐々に移行する方法があるかもしれませんが、実際にあなたのケースに対して具体的にどのように再生されるのかは誰にも分かりません。 – deceze
ええ、ありがとう。私は若干銀色の弾丸を望んでいるが、私はそこに1つではないと思う。 – Oli