c# - 如何重构代码以删除 C# 应用程序中的 break 语句
问题描述
我有一个 C# Windows 应用程序,我正在使用以下代码调用 API:
while (true)
{
try
{
using (HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "Some URL"))
{
requestMessage.Headers.Add("Accept", "application/json");
response = await myHttpHelper.SendHttpRequest(requestMessage).ConfigureAwait(false);
}
break; // where the code smells is shown
}
catch (TaskCanceledException )
{
if (++attemptCount > 3)
{
throw;
}
Thread.Sleep(10000);
}
catch (Exception ex2)
{
throw;
}
}
通常发生的情况是,当出现某些网络问题时,对 API 的获取请求会被取消。所以我所做的是每当任务被取消时,我都会尝试三遍。如果它不起作用,那么我向调用方法抛出异常。如果在这 3 次尝试中成功,我将打破循环。
现在,当我对我的代码运行声纳分析时,它显示删除 break 语句并重构代码。我怎样才能做到这一点?
解决方案
while (true)
是一个无限循环。相反,我宁愿使用(布尔)变量来签入while()
. 这使您有机会将此变量设置为false
并避免break
.
推荐阅读
- visual-studio-2017 - 如何在项目属性中启用包控件
- mysql - 分组连接不同的行
- qt - QML DelegateModel:从委托访问 DelegateModel
- oracle - 如何恢复对 Oracle 视图的所有调用
- java - Java“new Type[]{...}”数组字面量初始化是什么类型的语法?
- python - 如何修复日志中的负值?
- javascript - 检查在 ReactJS 中的表单提交时至少选择了三个选项
- php - 如果特定产品在 Woocommerce 的购物车中,则显示自定义结帐字段
- php - 如何使用php计算多个数据库行中数字数组元素的总和?
- django - Nginx 在某些方法上出现错误网关错误,而其他方法则有效