我有一个很难理解的算法,所以我以对const
变量的单一赋值的形式把它写下来,中间有很多评论解释我为什么这样做。每当算法拒绝解决方案时,return
就会引出一条语句。
另一方面,客户要求该方法没有“早期”返回语句,这是一个有点矛盾的目标,因为const
在这种情况下我可以使用我的变量的唯一方法是大量嵌套if
块。
是否有一个优雅的解决方案可以让我两全其美——如果变量在范围内并且仍然是一个有点扁平的层次结构,那么这些变量是有效的?
编辑:客户也对例外不满意,并且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);