реклама на сайте
подробности

 
 
> Проверка условия внутри функции или снаружи - как лучше.
Jenya7
сообщение Sep 28 2017, 09:58
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Сижу пару дней размышляю. Есть функции которые исполняются по условию.
Скажем если энкодер для данного мотора активирован - проверяй позицию, если не активирован - то соответственно и проверять нечего.
можно записать так
Код
case MOT_ST_RUN:

if (mot_data[mot_num].enc_num > 0)                
    MOT_PositionLoop(mot_idx);

break;

или спрятать проверку условия в функцию
Код
void MOT_PositionLoop(uint32_t mot_num)
{
    if (mot_data[mot_num].enc_num > 0)
    {
      
    }
}

и потом
Код
case MOT_ST_RUN:
      
MOT_PositionLoop(mot_idx);

break;


Вопрос как лучше?

Сообщение отредактировал Jenya7 - Sep 28 2017, 10:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novikovfb
сообщение Sep 28 2017, 10:32
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 518
Регистрация: 29-09-11
Пользователь №: 67 450



Неоднократно встречал рекомендацию: функция должна делать что-то одно. Функция, выполняющая 2 разных действия (проверяет позицию и регулирует ток) - моветон. Но если функция выставляет привод на указанную позицию с помощью регулировки тока - почему бы и нет.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 28 2017, 10:45
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(novikovfb @ Sep 28 2017, 15:32) *
Неоднократно встречал рекомендацию: функция должна делать что-то одно. Функция, выполняющая 2 разных действия (проверяет позицию и регулирует ток) - моветон. Но если функция выставляет привод на указанную позицию с помощью регулировки тока - почему бы и нет.

функция только проверяет позицию и не делает ничего другого. но я хочу проверять позицию по условию - если энкодер включен. вопрос где проверять это условие - внутри или снаружи.
если внутри то я привязываю к функции глобальную переменную. хорошо ли это.

Сообщение отредактировал Jenya7 - Sep 28 2017, 10:47
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016