重构循环
本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 16 课,共 66 课。
重构循环可以提高代码的可读性和可维护性。
将传统循环替换为 foreach,让代码更简单:
string[] fruits = { "apple", "banana", "cherry" };
// 重构前
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine(fruits[i]);
}
// 重构后
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}将复杂的循环逻辑提取到方法中:
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 重构前
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 2 == 0)
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// 使用辅助方法重构后
for (int i = 0; i < numbers.Length; i++)
{
if (IsEven(numbers[i]))
{
Console.WriteLine($"{numbers[i]} is even");
}
}
// 辅助方法
bool IsEven(int number)
{
return number % 2 == 0;
}把大型循环拆分成更小、目标更明确的循环:
int[] data = { 1, 2, 3, 4, 5 };
// 之前:一个大循环处理多项任务
for (int i = 0; i < data.Length; i++)
{
// 处理数据
data[i] = data[i] * 2;
// 打印结果
Console.WriteLine(data[i]);
}
// 之后:拆分成用途明确的多个循环
// 处理数据
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2;
}
// 打印结果
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine(data[i]);
}挑战
中等创建一个名为 refactorArrayFilter 的方法,它需要:
- 接收一个整数数组作为参数
- 实现两种代码版本,用于统计能被 3 整除的数字:
- 原始版本:使用传统的 for 循环和 if 语句
- 重构版本:使用 foreach 循环,并将逻辑提取到辅助方法中
- 以整数形式返回重构版本统计的数量
例如,给定数组 [3, 4, 6, 7, 9],方法应返回 3,因为其中有三个数字(3、6 和 9)能被 3 整除。
注意:你不需要打印任何内容,只需以整数形式返回统计数量。
亲手试试
public class RefactorArrayFilter
{
// 实现 refactorArrayFilter 方法
public static int refactorArrayFilter(int[] numbers)
{
// 在这里编写你的代码
}
// 实现你需要的辅助方法
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器