在 Dart 中声明变量的最佳做法是什么?
What's the best practice to declare a variable in Dart?
这个例子是与我的问题相关的一个简单案例。
案例 1: 声明退出循环
List<List<int>> matrix = [[1,2,3],[4,5,6],[7,8,9]];
List<int> o;
for(int i=0; i<matrix.length; i++) {
o = List.from(matrix[i]);
for(int e in o)
print(e);
}
情况 2: 在循环内声明
List<List<int>> matrix = [[1,2,3],[4,5,6],[7,8,9]];
for(int i=0; i<matrix.length; i++) {
List<int> o = List.from(matrix[i]);
for(int e in o)
print(e);
}
我在哪里声明变量重要吗?为什么?
局部变量的范围应该越小越好。因此,在循环内声明变量是更好的做法。
这样做的好处:
- 避免混淆具有通用名称的变量:如果一个变量被命名为
i
并且在多个循环中引用同一个变量,它可能会混淆变量在程序的任何部分具有什么值。
- 如果此局部变量在其他地方被引用
,编译器会发出精确的警告和错误
- 更好的优化:由于局部变量作用域仅限于循环,所以循环执行后不需要存储变量值。对于今天的标准,这个小优化并不重要。
- 更好的可读性
仅当您不需要像这样重用更新后的变量值时,在循环内声明变量才是好的:
int counter = 0;
for(final i in range(1, 10)) {
counter++;
// use variable counter here as a "counter"
}
在下面的代码片段中,使用变量 counter
作为计数器是 无效的 因为变量在每个循环开始时重新初始化
for(final i in range(1, 10)) {
int counter = 0;
counter++;
// use counter here as a "counter"
}
如果您确实想将变量用作计数器(或任何其他目的)并在循环内更新它的值并在循环范围外使用它,那么只在循环外声明变量。
参考文献:
- Declaring variables inside loops, good practice or bad practice?
- Declaring variables inside or outside of a loop
这个例子是与我的问题相关的一个简单案例。
案例 1: 声明退出循环
List<List<int>> matrix = [[1,2,3],[4,5,6],[7,8,9]];
List<int> o;
for(int i=0; i<matrix.length; i++) {
o = List.from(matrix[i]);
for(int e in o)
print(e);
}
情况 2: 在循环内声明
List<List<int>> matrix = [[1,2,3],[4,5,6],[7,8,9]];
for(int i=0; i<matrix.length; i++) {
List<int> o = List.from(matrix[i]);
for(int e in o)
print(e);
}
我在哪里声明变量重要吗?为什么?
局部变量的范围应该越小越好。因此,在循环内声明变量是更好的做法。
这样做的好处:
- 避免混淆具有通用名称的变量:如果一个变量被命名为
i
并且在多个循环中引用同一个变量,它可能会混淆变量在程序的任何部分具有什么值。 - 如果此局部变量在其他地方被引用 ,编译器会发出精确的警告和错误
- 更好的优化:由于局部变量作用域仅限于循环,所以循环执行后不需要存储变量值。对于今天的标准,这个小优化并不重要。
- 更好的可读性
仅当您不需要像这样重用更新后的变量值时,在循环内声明变量才是好的:
int counter = 0;
for(final i in range(1, 10)) {
counter++;
// use variable counter here as a "counter"
}
在下面的代码片段中,使用变量 counter
作为计数器是 无效的 因为变量在每个循环开始时重新初始化
for(final i in range(1, 10)) {
int counter = 0;
counter++;
// use counter here as a "counter"
}
如果您确实想将变量用作计数器(或任何其他目的)并在循环内更新它的值并在循环范围外使用它,那么只在循环外声明变量。
参考文献:
- Declaring variables inside loops, good practice or bad practice?
- Declaring variables inside or outside of a loop