複雑な条件の書き方
こんにちは。c#初心者です。(今回の質問はcに近い言語ならどれでも大差ないと思います)
複雑な条件を使って処理を分岐する場合、
if ( A || (B && (C || D || E)) && F) // A~Fは条件
else
のようになったりすることもあると思いますが、それがさらに複雑化して
if ( value1 < A || (B && ( (value1 = values[index]) == C || D || E)) && (value1 = values[value2]) == F )
else
( A~Fはフィールド(インスタンス)変数やstaticな変数で、それ以外はローカル )
のように代入まで入ってきているようなコードがあった場合は、さら乱雑になるので
bool satisfied(ref int value, int value2, int[] values, int index)
{
if ( value1 < A ) return true;
if ( !B ) return false;
value1 = values[index];
if ( value1 != C && !D && !E ) return false;
value1 = values[value2];
return value1 = F;
}
のようなメソッドに抽出して
if ( satisfied(ref value1, value2, values, index) ) …
else …
のようにしたほうが良いのでしょうか?
ちなみにこれらの条件は(初心者が見る限り多分)これ以上細かく分離できず、再利用される場所がありません。
そのためメソッドにしてしまわず、インデントなどを駆使して
if ( value1 < A ||
(
B &&
(
(value1 = values[index]) == C
|| D || E
)
)
&& (value1 = values[value2]) == F )
else
のようにするだけでも良いのでしょうか?(何だかやりすぎて、逆に見にくくなった気が…)
この辺の事はよくわからないので皆さんのご意見を伺わせてください。
お礼
無関心でいたいのですがなにせ事務所に5にん 聞きたくもないのに言ってくれば気になるでしょう 疲れるし人間不信になるし お金を稼ぐ為に仕方なく我慢している日々です