Как лучше объявлять переменную в Dart? - PullRequest
0 голосов
/ 27 февраля 2020

Этот пример - простой случай, связанный с моим вопросом.

Случай 1: объявление из l oop

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: объявление внутри l oop

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);
}

Имеет ли значение, где я объявляю переменную? Почему?

1 Ответ

1 голос
/ 29 февраля 2020

Область действия локальной переменной должна быть как можно меньше. Таким образом, объявление переменной внутри l oop является лучшей практикой.

Преимущества этого:

  • Предотвращает смешивание переменных , имеющих общие c names: если переменная названа i и на одну и ту же переменную ссылаются в нескольких циклах, может возникнуть путаница относительно значения переменной в любой части программы.
  • Компилятор выдает точные предупреждения и ошибки , если на эту локальную переменную ссылаются где-то еще
  • Лучшая оптимизация : поскольку область действия локальной переменной ограничена значением l oop, поэтому нет необходимости сохранить значение переменной после выполнения l oop. Для сегодняшних стандартов эта небольшая оптимизация не имеет большого значения.
  • Лучшая читаемость

Объявление переменной внутри l oop хорошо, только если вы не нужно повторно использовать обновленное значение переменной, например:

int counter = 0;
for(final i in range(1, 10)) {
    counter++;
    // use variable counter here as a "counter"
}

В приведенном ниже фрагменте, использование переменной counter в качестве счетчика равно неверно , так как переменная повторно инициализируется в начале каждого l oop

for(final i in range(1, 10)) {
    int counter = 0;
    counter++;
    // use counter here as a "counter"
}

Если вы хотите использовать переменную в качестве счетчика (или любой другой цели) и обновить ее значение внутри al oop и использовать его вне области действия l oop затем объявлять переменную только за пределами l oop.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...