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

 
 
9 страниц V  « < 7 8 9  
Reply to this topicStart new topic
> Коды завершения функции
one_eight_seven
сообщение May 8 2018, 06:05
Сообщение #121


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата(Forger @ May 8 2018, 09:01) *
Это - не критическая ошибка, не фатальная. Т.е. "рабочая" ошибка. Поэтому и работать с ней нужно иначе (зависит от проекта, точнее от его ТЗ).

Товарищ, если вы внимательнее пересмотрите посты дискусии, вы увидите, что чуть выше я эти же ситуации привёл именно в качестве примера "рабочих ошибок", как ответ на вопрос
Цитата
...контроллер квадрокоптера или робота, то какие там могут быть "рабочие ошибки"?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 8 2018, 06:07
Сообщение #122


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(one_eight_seven @ May 8 2018, 08:58) *
А если шина не закорочена? А просто обрыв канала связи, например, радиоканала с пультом управления. И канал связи может восстановиться. Или датчик в сети теряет базу (orphaning). Это всё ошибки в работе системы. С точки зрения автомата - это рабочие ситуации, но они все начинаются с возврата ошибок. То же получение Nack - ситуация стандартная, но ошибочная, в том, смысле, что это ошибка работы системы.

Блин у меня пульсометр постоянно теряет связь с часами.
Если я пожалуюсь на это производителю и скажу что это ошибка там чья-то, они будут смеяться мне в лицо.
Т.е. понимаете, на Верхнем уровне не нужны никому такие ошибки и с ними никто не будет разбираться. biggrin.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 8 2018, 06:11
Сообщение #123


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (AlexandrY @ May 8 2018, 13:39) *
А с вашим понятием верха, создается ощущение как будто на верху вы только и ждете сбоев АЦП и там уже все готово к потере или искажению данных.

Зато, если произойдёт сбой, то я буду знать, где искать.

QUOTE (AlexandrY @ May 8 2018, 14:07) *
Если я пожалуюсь на это производителю и скажу что это ошибка там чья-то, они будут смеяться мне в лицо.

Ну у каждого свой подход)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение May 8 2018, 06:14
Сообщение #124


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата(AlexandrY @ May 8 2018, 09:07) *
Блин у меня пульсометр постоянно теряет связь с часами.
Если я пожалуюсь на это производителю и скажу что это ошибка там чья-то, они будут смеяться мне в лицо.
Т.е. понимаете, на Верхнем уровне не нужны никому такие ошибки и с ними никто не будет разбираться. biggrin.gif

У вас как, связь с реальностью не потеряна?
1. Вы купили некачественный товар, и вы имеете право требовать нормальной его работы.
2. Обрыв датчика нужно видеть на верхнем уровне. Потерю связи с беспилотником нужно видеть на пульте. Но обе эти вещи обработаются локально, поскольку они видны на обоих концах.
3. Возвращаясь к теме дискуссии, если беспилотник потерял связь с пультом, то функция, которая ждёт Ack (условно говоря), не должна возвращать OK, она должна вернуть либо FAIL, либо NO_ACK, либо NACK (в зависимости от того, что произошло), и это коды ошибочного завершения работы функции. Что с этим будет дальше - не дело функции, она вообще не должна "знать" что там дальше. Абстракции - это же основное, что должен знать разработчик.

Сообщение отредактировал one_eight_seven - May 8 2018, 06:15
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 8 2018, 06:15
Сообщение #125


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Forger @ May 8 2018, 08:53) *
Это - уже критическая ошибка, ее можно избежать еще на этапе создания кода, добавив перед делением соотв. проверку.

Положим, так и делается. Америку не открыли.
Цитата
На подобные ответы уже есть готовые решения, для этого не нужно создавать новую тему sm.gif

Это мне решать.
Go to the top of the page
 
+Quote Post
juvf
сообщение May 8 2018, 06:27
Сообщение #126


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ May 8 2018, 10:53) *
вообще не использовать штатный механизма выделения памяти (malloc/free)
временные массивы обычно на стеке выделяются, типа int tempArray[1024]; конечно если стека не фватит - то фолаут! малоком можно избежать фалаута, но делать времянки в куче - мовитон. Как решение alloca - динамическое выделение памяти на стеке. Тут наверно будет это полезно, и организовать возврат ошибки вместо фалаута.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 8 2018, 06:38
Сообщение #127


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(one_eight_seven @ May 8 2018, 09:05) *
Товарищ...

Дискуссия постепенно ведет к холивару


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
juvf
сообщение May 8 2018, 06:42
Сообщение #128


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



ещё по теме..... вот функция объявлена как

ErCodeF1 myFunc1();

ErCodeF1 - тип енум из 3-х кодов. Я глянул этот енум и я понимаю, что может вернуть myFunc1(). Во первых, мне не нужно писать документацию на возвращаемые значения, всё понятно по именам в енуме, в крайнем случае комент на код ошибки в енуме. Во вторых я могу сделать обработку для каждого кода ошибок. Их всего 3 (один из них будет NO_ERROR, т.е. даже 2 кода ошибки.)

Тоже самое могу сказать про ErCodeF2 myFunc2();, ErCodeF4 myFunc4();, ErCodeF3 myFunc3() и т.д. у каждой функции только необходимое кол-во кодов ошибок.

Теперь делаем общий енум ошибок ErCode (или адский, как у AlexandrY), вызываем функцию ErCode yourFunc1(); какие возможные коды она вернёт? На какие коды ошибок писать обработчик? Нужно лезть в какие-то мануалы, читать описания....

неудобно. имхо.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 8 2018, 06:58
Сообщение #129


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ May 8 2018, 09:42) *
неудобно. имхо.


Это еще мягко сказано wacko.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 8 2018, 11:21
Сообщение #130


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(juvf @ May 8 2018, 09:42) *
...
Тоже самое могу сказать про ErCodeF2 myFunc2();, ErCodeF4 myFunc4();, ErCodeF3 myFunc3() и т.д. у каждой функции только необходимое кол-во кодов ошибок.
Теперь делаем общий енум ошибок ErCode (или адский, как у AlexandrY), вызываем функцию ErCode yourFunc1(); какие возможные коды она вернёт? На какие коды ошибок писать обработчик? Нужно лезть в какие-то мануалы, читать описания....

неудобно. имхо.

Не вижу разницы между первым и вторым. По мне, проще сложить все универсальные ошибки в одно перечисление, чем для каждой функции создавать свое. И в обоих случаях придется лезть как в описание ошибок, так и в функции, их порождающие.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 8 2018, 11:40
Сообщение #131


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(ViKo @ May 8 2018, 14:21) *
Не вижу разницы между первым и вторым. По мне, проще сложить все универсальные ошибки в одно перечисление,

А как тогда отделить "мух от котлет": какие ошибки функция может возвращать, а какие нет?
Например, как в коде, где применяется примитивная функция, которая возвращает лишь два значения, понять, на какие возвращаемые значения реагировать, а на какие нет?
Каждый раз при создании или чтении кода лезть в ее описание?

Все наверняка сталкивались с книгами, перегруженными поясняющими комментариями внизу страницы. Хорошо, если они внизу страницы, а если все собраны в одну кучу в конце книги?


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение May 8 2018, 11:46
Сообщение #132


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата
Все наверняка сталкивались с книгами, перегруженными поясняющими комментариями внизу страницы. Хорошо, если они внизу страницы, а если все собраны в одну кучу в конце книги?

Обратная аналогия. А если глоссарий будет не в конце книги, а в конце каждого раздела?
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 8 2018, 11:50
Сообщение #133


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я предполагаю 2 перечисления - универсальные коды завершения функций и ошибки аппаратные.
Первое перечисление я показал в начале темы. Это некие перестраховки от неправильно полученных аргументов.
А второе - это то, что будет требовать выдачи пользователю или регулировщику. Например, "неисправен контроллер ЖКИ". Их еще "выпискивать" буду при включении. С этими ошибками прибор работать не может.
Как на основе первых переходить ко вторым - частное дело в каждом случае.
Go to the top of the page
 
+Quote Post
Forger
сообщение May 8 2018, 11:56
Сообщение #134


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

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(one_eight_seven @ May 8 2018, 14:46) *
Обратная аналогия. А если глоссарий будет не в конце книги, а в конце каждого раздела?

© "Хрен редьки не слаще"


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 8 2018, 18:47
Сообщение #135


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(haker_fox @ May 7 2018, 17:59) *
Я лишь идею предложил, а реализацией не занимался. Вполне возможно, что не всё так гладко на первый взгляд. Зато - гибко. Можно к любому типу привести.
Реализация активно используется в Windows, один параметр используется как код события (коих множество типов), второй - указатель на евойные даннные (типо-зависимые).

Go to the top of the page
 
+Quote Post

9 страниц V  « < 7 8 9
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


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


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