Где правильнее обявлять переменные?

Тема в разделе "Arduino & Shields", создана пользователем alex_Z, 27 ноя 2016.

  1. alex_Z

    alex_Z Нуб

    Не могу найти информацию где правильнее объявлять переменные, в самом начале программы или уже по ходу выполнения?
    И увеличивается ли скорость выполнения программы если переменную объявить в самом начале до void setup() а в программе только работать с ней?
     
  2. rkit

    rkit Гуру

    где самому удобнее
     
  3. Unixon

    Unixon Оракул Модератор

    1) Таким образом, чтобы область видимости переменной была минимально необходимой. Т.е. по ходу выполнения, внутри циклов, и т.п.;
    2) Нет.
     
    alex_Z нравится это.
  4. alex_Z

    alex_Z Нуб

    1) Таким образом, чтобы область видимости переменной была минимально необходимой. Т.е. по ходу выполнения, внутри циклов, и т.п.;
    Это чтобы не запутаться или чтобы увеличить быстродействие?
     
  5. Vetrinus

    Vetrinus Гик

    Условно говоря, контроллер всегда работает одинаково быстро.
    Т.е. одинаково быстро выполняет поставленные вами задачи.
    А то, насколько разумно и правильно вы будете эти задачи ставить - зависит от вас.
    По поводу переменных - это сложившийся и проверенный временем подход к организации программы.
     
  6. Unixon

    Unixon Оракул Модератор

    Это чтобы минимизировать возможность ошибки.
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    есть есть возможность (тут скорее даже знания), то переменные лучше объявлять локально, т.е. непосредственно там, где они используются - т.е. внутри функции или перед групповыми фигурными скобками. Это позволит в пару кликов уже готовые и работающие программные блоки переносить в другие проекты = выше продуктивность и минимизация ошибок.
    Там, где такой подход неудобен (переменная используется во многих местах в коде), следует использовать глобальные переменные, с внятным названием (чтобы ее назначение было видно даже без комментариев).
     
  8. qwone

    qwone Гик

    Код пишется не только для процессора, но и для программиста, который пишет и главное отлаживает эту программу. (Главное правило программиста)
    А вот переменные должны быть там где вы их сможете найти. Но скорее всего вопрос не в переменных, а в константах, которые выглядят как переменные, и которые надо менять для доводки программы. Ну или переменные которым программист задает начальные значения.
     
  9. alex_Z

    alex_Z Нуб

    Непосредственно перед использованием это конечно удобно но просто объявление переменной стирает ее значение...
     
  10. qwone

    qwone Гик

    Зачет за лучшую шутку.
     
    Tomasina нравится это.
  11. alex_Z

    alex_Z Нуб

    void setup() {

    Serial.begin(9600);
    }

    void loop() {

    int q;
    q++;
    Serial.println(q);
    delay (200);
    }
    У меня этот код выводит в порт только единицы.....
     
  12. qwone

    qwone Гик

    Код (C++):
    void setup() {
    Serial.begin(9600);
    }

    void loop() {
    static int q=0;
    q++;
    Serial.println(q);
    delay (200);
    }
    А так?
     
    alex_Z нравится это.
  13. alex_Z

    alex_Z Нуб

    этого я не знал, спасибо!
     
  14. Unixon

    Unixon Оракул Модератор

    1) нет инициализации q - ошибка.
    2) тело функции loop() - недостаточная область видимости для q - ошибка. (в static или в глобальные)
     
    alex_Z нравится это.