私は理解するのがかなり難しいアルゴリズムを持っているので、変数への単一の割り当ての形でそれを書き留め、const
その間になぜそうしているのかを説明する多くのコメントを付けました。アルゴリズムが解決策を拒否するたびに、return
ステートメントが導き出されます。
一方、顧客は、const
このシナリオで変数を使用できる唯一の方法はネストされたif
ブロックがたくさんあるため、メソッドに「初期の」return ステートメントがないことを要求しました。これはやや矛盾する目標です。
両方の世界を最大限に活用できるエレガントなソリューションはありますか?変数がスコープ内にあり、階層がややフラットである場合に有効な変数はありますか?
編集:顧客は例外とgoto
. これはホット パスであり、ソリューション ジェネレーターから提案されたソリューションが受け入れ可能であり、以前のソリューションよりも優れているかどうかを判断する決定ツリーを実装します。
ネストされた if のスコープは次のようになります
if(fulfills_condition_1(sol)) {
double const some_quality = quality_function_1(sol);
double const normalized_quality = normalize_quality_1(some_quality);
if(fulfills_condition_2(normalized_quality) {
{
double const another_quality = ...
}
}
私の現在のアプローチは次のようになります
if(!fulfills_condition_1(sol))
return;
double const some_quality = quality_function_1(sol);
double const normalized_quality = normalize_quality_1(some_quality);
if(!fulfills_condition_2(normalized_quality) {
return;
...
update_current_solution(sol);