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

 
 
> Коды завершения функции
ViKo
сообщение Apr 24 2018, 05:26
Сообщение #1


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

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



Иногда приходится придумывать некие коды, информирующие о той или иной ошибке при выходе из функции. К EXIT_SUCCESS и EXIT_FAILURE добавляются дополнительные. Не задавались ли вы целью привести коды в систему, чтобы пользоваться во всех случаях? Если да, поделитесь, пожалуйста идеями.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение May 2 2018, 04:13
Сообщение #2


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

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



QUOTE (juvf @ Apr 29 2018, 02:19) *
не получиться универсального енума, глупости это. ИМХО. Тем более 8 или всего 4 значения. У каждой функции своя задача и свои возвращаемые значения.
мой черновик функции включения вращения антенны

Как вы передаёте код ошибки при вложенном вызове функций? Т.е. снизу на верх?
QUOTE (juvf @ Apr 29 2018, 02:19) *
Слышали такое слово "говнокод"?

Ну конечно слышал, как и множество других мерзких слов. Тут вопрос в другом, позволить себе использовать это по отношению к другим, или нет?
QUOTE (juvf @ Apr 29 2018, 02:19) *
Чужой код - всегда гавно. Каким бы он ни был.

Я понял, что вы имеете в виду rolleyes.gif Мне такие намёки тоже делали. Не прямыми словами. Когда я парировал, что это мой собственный стиль написания кода, человек, оскорбивший моё творчество, сватил жёсткий "батхёрт", и начал меня учить, что стили в коде это совершенно другое. В общем его задача была обругать, а не понять. И ему мои объяснения (хотя он мне и не начальник) были совершенно не нужны. К слову, его код постоянно подвергается справедливой (на мой взгляд) критике. Не ругане, а критике. Поэтому делаю вывод (не только по этому случаю), тот кто умеет делать дело, других ругать не станет. Максимум - аккуратно посоветует, как можно по-другому. Ну, а возомнивший себя профессионалом, будет изрыгать огонь налево и направо, при этом тащась от творений себе подобных rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
juvf
сообщение May 2 2018, 16:26
Сообщение #3


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

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



Цитата(haker_fox @ May 2 2018, 09:13) *
Как вы передаёте код ошибки при вложенном вызове функций? Т.е. снизу на верх?
Чаще я ошибки обрабатываю на месте и мне не нужно их передавать выше. Если нужно выше передать, то делаю общий енум кодов ошибок для отдельного куста.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 3 2018, 00:27
Сообщение #4


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

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



QUOTE (juvf @ May 3 2018, 00:26) *
Чаще я ошибки обрабатываю на месте и мне не нужно их передавать выше. Если нужно выше передать, то делаю общий енум кодов ошибок для отдельного куста.

Понятно! У вас тоже общий энум всё-таки не исключён rolleyes.gif
У меня была задача передавать коды ошибок "на верх" не только через иерархию функцию, но и устройств. Т.е., например, "железяка1"-"железяка2"-"комп".


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
juvf
сообщение May 4 2018, 07:17
Сообщение #5


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

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



Цитата(haker_fox @ May 3 2018, 05:27) *
Понятно! У вас тоже общий энум всё-таки не исключён rolleyes.gif
Да, не исключен. Но он не универсальный для всех случаев жизни. для двигателя я привел енум. Там не будет DEVICE_NOT_FOUND или ERROR_OPEN_FILE.


Цитата
Это многое объясняет biggrin.gif

Я же говорил, что чужой код всегда гэ. "говнокод" - это не ругательство, а синоним слова "чужой код" (хотя может "чужой код" - это и есть ругательство ))) . У AlexandrY код то ещё ни кто не глянул, но зато уже пошла критика, и только за то, что там глобальные переменные. А может его код с глобальными переменными гораздо понятнее и безопаснее, чем ваши ООП-эшные извраты.

то, что там кто-то не может разгрести чьи-то спагетти с глобальными, так это проблема не глобальных переменных, а проблема автора и/или читателя кода. Автор мог написать вам код без глобальных переменных так, что вы бы вообще не разобрались.

Цитата
Ну, а как пользователь за компом узнает, что произошла ошибка на нижнем уровне? И неисправимая ошибка.
если всё крутиться на ПК, то я на нижнем уровне генерирую сигнал с текстовым сообщением для юзера, а ГУИ поток этот сигнал обрабатывает слотом с выводом MessageBox и логированием.

Цитата
А как бы вы поступили, к примеру в следующем случае: пользователь жмёт кнопку запуска двигателя, а у двигателя отказал датчик (любой). Запуск без датчика невозможет в принципе, либо возможен, но в ограниченном режиме. Как передать эту "мелкую" ошибку от платы датчика к плате управления двигателем, а затем - наверх скаде?


между платой датчика и платой управления двигателя свой протокол обмена. в этом протоколе определены свои коды ошибок. плата управления двигателем обрабатывает эту ошибку. например у меня два датчика. датчик передает код ошибки "превышение вращения". Плата управления обрабатывает эту ошибку по своему алгоритму и делает соответствующие действия, в скаду передается (по совершенно другому протоколу) "превышение вращения с датчика 2". Или вообще может передаться интегральное состояние всего привода. Т.е. тут уже свой набор ошибок.

Go to the top of the page
 
+Quote Post
Forger
сообщение May 4 2018, 08:47
Сообщение #6


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

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



Цитата(juvf @ May 4 2018, 10:17) *
У AlexandrY код то ещё ни кто не глянул, но зато уже пошла критика, и только за то, что там глобальные переменные.

Ну, код как код, такого в интернетах вагон и маленькая тележка.
Гитхаб завален подобным кодом. Но как известно "дареному коню зубы не смотрят" wink.gif

А действительно серьезный код с хорошей достойной документацией, сопровождением и внятным содержимым стоит соотв. денег.
Либо как щас принято - часть бесплатно (чаще всего ядро ОСи), но все остальное - за денежку.

Цитата
чем ваши ООП-эшные извраты.
Выдаете себя: ругаете то, чего, похоже, не понимаете wink.gif

Цитата
Автор мог написать вам код без глобальных переменных так, что вы бы вообще не разобрались.
Прохожу мимо любого кода, при чтении которого "спотыкаюсь" на каждом символе.
Наверняка, многим попадались книги, написанные аналогичным образом, но судьба их проста - идут на растопку дров. С подобным кодом - аналогично.
А глобальные переменные - как лакмусовая бумажка, говорят о том, что в этом коде не все так просто - могут быть грабли в самом неожиданном месте.
Безусловно, в примитивных проектах глобальные переменные навряд ли создадут какие-то серьезные проблемы.

Кстати, в свое время мне по необходимости пришлось уйти от глобальных объектов (остались лишь максимум синглтоны или в некоторых проектах static объекты внутри соотв. "модуля").
Поэтому есть с чем сравнить. Скажу так - обратно не вернусь, ибо к хорошему привыкаешь быстро rolleyes.gif


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


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

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



Цитата(Forger @ May 4 2018, 13:47) *
остались лишь максимум синглтоны или в некоторых проектах static объекты внутри соотв. "модуля").
а я ушел от синглтонов. Сам писал синглтоны, чужой код смотрел/сопровождал с синглтонами..... абсолютно ненужная сущность. Скажу так - обратно к синглтонам не вернусь, ибо к хорошему привыкаешь быстро rolleyes.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение May 4 2018, 09:54
Сообщение #8


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

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



Цитата(juvf @ May 4 2018, 12:14) *
а я ушел от синглтонов. Сам писал синглтоны, чужой код смотрел/сопровождал с синглтонами..... абсолютно ненужная сущность. Скажу так - обратно к синглтонам не вернусь, ибо к хорошему привыкаешь быстро rolleyes.gif

Согласен по синглтонам!
Они по сути - некий "костыль"
Но если выбирать между глобальной структурой или классом, лучше хотя бы временно использовать синглтон, просто, потом его очень просто перевести в обычный класс.

В некоторых моих текущих проектах он остался лишь только в одном месте:
Код
class SomeApplication: public Application<.......>, public Singleton<BootLoader>
{
...
}

int main()
{
    SomeApplication::getInstance().initialize();
    SomeApplication::getInstance().run();
}


Но в остальных уже заменен на такую конструкцию:
Код
class SomeApplication: public Application<.......>
{
...
}

int main()
{
    static SomeApplication application;

    application.initialize();
    application.run();
}

В принципе "static SomeApplication application" - единственный в проекте объект с квалификатором "static", а тут он еще и внутри main объявлен, что вообще напрочь закрывает к нему доступ из любого другого места даже в самом файле, где реализуется этот "main()".
Поэтому считаю такое решение пока что вполне допустимым.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Коды завершения функции   Apr 24 2018, 05:26
- - twix   ...   Apr 24 2018, 05:37
- - arhiv6   Например, есть стандартные системные наборы кодов ...   Apr 24 2018, 05:46
- - ViKo   Хорошие коды. Но для встроенной программы избыточн...   Apr 24 2018, 05:59
- - Arlleex   Я обычно пишу модульно. То есть есть драйвер, допу...   Apr 24 2018, 06:36
- - ViKo   Меня немного смущает, что имя тип возвращаемого ко...   Apr 24 2018, 07:01
- - ViKo   Ну, вот такой набор прикинул, скомпилировал из раз...   Apr 24 2018, 09:47
|- - haker_fox   QUOTE (ViKo @ Apr 24 2018, 17:47) Ну, вот...   Apr 24 2018, 10:03
|- - ViKo   Цитата(haker_fox @ Apr 24 2018, 13:03) Вс...   Apr 24 2018, 10:12
|- - Kabdim   Цитата(haker_fox @ Apr 24 2018, 13:03) Кс...   Apr 24 2018, 10:54
|- - haker_fox   QUOTE (Kabdim @ Apr 24 2018, 18:54) Возвр...   Apr 24 2018, 14:10
- - one_eight_seven   ЦитатаНу, вот такой набор прикинул, скомпилировал ...   Apr 24 2018, 10:19
|- - ViKo   Цитата(one_eight_seven @ Apr 24 2018, 13...   Apr 24 2018, 10:25
- - one_eight_seven   ЦитатаЯ всегда делаю для себя. Но так, чтобы други...   Apr 24 2018, 10:30
- - ViKo   Э, если бы работа в группе заключалась в использов...   Apr 24 2018, 10:35
- - HardEgor   Цитата(ViKo @ Apr 24 2018, 12:26) Иногда ...   Apr 24 2018, 11:27
- - Kabdim   У вас в чипе 4Гб памяти? Но в общем, если не паков...   Apr 24 2018, 14:39
|- - jcxz   Цитата(Kabdim @ Apr 24 2018, 17:39) Наско...   Apr 24 2018, 16:28
|- - Kabdim   Цитата(jcxz @ Apr 24 2018, 19:28) Это в к...   Apr 25 2018, 07:37
- - k155la3   Цитата(ViKo @ Apr 24 2018, 08:26) Иногда ...   Apr 24 2018, 14:59
- - ViKo   Из функции можно возвратить структуру, в любом пра...   Apr 24 2018, 18:39
|- - jcxz   Цитата(ViKo @ Apr 24 2018, 21:39) Из функ...   Apr 24 2018, 18:44
|- - AlexandrY   Цитата(ViKo @ Apr 24 2018, 21:39) Из функ...   Apr 25 2018, 05:57
|- - ViKo   Цитата(AlexandrY @ Apr 25 2018, 08:57) Ща...   Apr 25 2018, 06:08
|- - AlexandrY   Цитата(ViKo @ Apr 25 2018, 09:08) Действи...   Apr 25 2018, 06:12
- - ViKo   А как насчет высказывания jcxz? ЦитатаТолько я все...   Apr 25 2018, 06:23
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 09:23) Я думаю...   Apr 25 2018, 07:05
- - ViKo   Первая цитата не показывает, что размер структуры ...   Apr 25 2018, 07:33
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 10:33) Первая ...   Apr 25 2018, 07:41
|- - ViKo   Цитата(jcxz @ Apr 25 2018, 10:41) Если не...   Apr 25 2018, 08:25
|- - jcxz   И откуда сиё взято? В "IAR C/C++ Development ...   Apr 25 2018, 08:38
- - haker_fox   QUOTE (Kabdim @ Apr 24 2018, 22:39) У вас...   Apr 25 2018, 07:38
|- - Kabdim   Цитата(haker_fox @ Apr 25 2018, 10:38) ОЗ...   Apr 25 2018, 07:58
- - ViKo   http://infocenter.arm.com/help/topic/com.a...0042F...   Apr 25 2018, 08:42
|- - jcxz   Цитата(ViKo @ Apr 25 2018, 11:42) Я, прав...   Apr 25 2018, 09:00
- - haker_fox   QUOTE (jcxz @ Apr 25 2018, 15:41) Если кт...   Apr 25 2018, 08:51
|- - Kabdim   Цитата(jcxz @ Apr 25 2018, 11:38) Не поня...   Apr 25 2018, 08:55
||- - haker_fox   QUOTE (Kabdim @ Apr 25 2018, 16:55) Тольк...   Apr 25 2018, 09:03
||- - jcxz   Цитата(haker_fox @ Apr 25 2018, 12:03) Я ...   Apr 25 2018, 09:06
|||- - haker_fox   QUOTE (jcxz @ Apr 25 2018, 17:06) ......в...   Apr 25 2018, 09:44
||- - Kabdim   Цитата(haker_fox @ Apr 25 2018, 12:03) Я ...   Apr 25 2018, 09:09
||- - AlexandrY   Цитата(haker_fox @ Apr 25 2018, 12:03) Я ...   Apr 25 2018, 09:32
|- - Сергей Борщ   QUOTE (haker_fox @ Apr 25 2018, 10:51) Во...   Apr 25 2018, 09:20
- - one_eight_seven   ЦитатаДумаю, что если есть ограничение, компилятор...   Apr 25 2018, 09:06
|- - jcxz   Цитата(one_eight_seven @ Apr 25 2018, 12...   Apr 25 2018, 09:12
- - one_eight_seven   ЦитатаВсё универсальное - неоптимально по определе...   Apr 25 2018, 09:14
- - arhiv6   А кто-нибудь использует для обработки ошибок CExce...   Apr 25 2018, 10:43
|- - Forger   Цитата(arhiv6 @ Apr 25 2018, 13:43) А кто...   Apr 25 2018, 17:47
|- - jcxz   Цитата(Forger @ Apr 25 2018, 20:47) Это к...   Apr 25 2018, 18:05
||- - Forger   Цитата(jcxz @ Apr 25 2018, 20:58) Ну да -...   Apr 25 2018, 18:11
|||- - jcxz   Цитата(Forger @ Apr 25 2018, 21:11) Я лич...   Apr 25 2018, 18:23
|||- - Forger   Цитата(jcxz @ Apr 25 2018, 21:23) Для ава...   Apr 25 2018, 18:29
||- - arhiv6   Цитата(jcxz @ Apr 26 2018, 01:05) Ну да -...   Apr 26 2018, 02:21
|- - jcxz   Цитата(Forger @ Apr 25 2018, 20:47) Читае...   Apr 25 2018, 18:14
|- - Forger   Цитата(jcxz @ Apr 25 2018, 21:14) Читаемо...   Apr 25 2018, 18:21
|- - AlexandrY   Цитата(Forger @ Apr 25 2018, 21:21) В гол...   Apr 25 2018, 18:32
||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 21:32) Кс...   Apr 25 2018, 18:57
||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 21:38) Уточн...   Apr 25 2018, 19:00
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:00) Ку...   Apr 25 2018, 19:08
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 22:08) ... н...   Apr 25 2018, 19:23
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:23) А ...   Apr 25 2018, 19:30
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 22:30) Напри...   Apr 25 2018, 19:51
|||- - Forger   Цитата(AlexandrY @ Apr 25 2018, 22:51) Вы...   Apr 25 2018, 20:13
|||- - AlexandrY   Цитата(Forger @ Apr 25 2018, 23:13) Я исп...   Apr 25 2018, 20:22
|||- - Forger   Возвращаясь к теме: http://softwaremaniacs.org/blo...   Apr 25 2018, 20:37
||- - jcxz   Цитата(Forger @ Apr 25 2018, 21:57) Очеви...   Apr 25 2018, 19:08
||- - Forger   Цитата(jcxz @ Apr 25 2018, 22:08) "Д...   Apr 25 2018, 19:17
|- - jcxz   Цитата(Forger @ Apr 25 2018, 21:21) Вовсе...   Apr 25 2018, 18:33
- - dimka76   В комплекте GCC в папке arm-none-eabi\include...   Apr 25 2018, 18:11
- - haker_fox   Коллеги, маленькое лирическое отступление) Прошу н...   Apr 26 2018, 02:33
- - juvf   не получиться универсального енума, глупости это. ...   Apr 28 2018, 18:19
|- - Forger   Цитата(juvf @ Apr 28 2018, 21:19) Чужой к...   Apr 28 2018, 21:50
|- - AlexandrY   Цитата(haker_fox @ May 3 2018, 03:27) Пон...   May 3 2018, 05:52
||- - Forger   Цитата(AlexandrY @ May 3 2018, 08:52) ......   May 3 2018, 08:50
||- - AlexandrY   Цитата(Forger @ May 3 2018, 11:50) Поэтом...   May 3 2018, 10:04
||- - Forger   Цитата(AlexandrY @ May 3 2018, 13:04) Стр...   May 3 2018, 10:49
||- - AlexandrY   Цитата(Forger @ May 3 2018, 13:49) это но...   May 3 2018, 13:37
||- - Forger   Цитата(AlexandrY @ May 3 2018, 16:37) На ...   May 3 2018, 15:23
- - ViKo   Я постарался дать обобщенные имена ошибкам. А как ...   May 2 2018, 06:45
- - ViKo   Кстати, в данное время я решил выдавать результаты...   May 3 2018, 03:02
- - ViKo   Можно даже скомбинировать тип устройства и тип оши...   May 3 2018, 05:28
- - Arlleex   ЦитатаЯ скажем везде где можно использую глобальны...   May 3 2018, 14:45
|- - AlexandrY   Цитата(Arlleex @ May 3 2018, 17:45) С рос...   May 3 2018, 17:46
- - Arlleex   ЦитатаЭто у вас весьма маленькое приложение. А я и...   May 3 2018, 19:22
|- - haker_fox   QUOTE (Arlleex @ May 4 2018, 03:22) А бло...   May 4 2018, 01:22
|- - AlexandrY   Цитата(Arlleex @ May 3 2018, 22:22) Истор...   May 4 2018, 07:55
- - AnatolyT   Пишу для м\к на чистом С, для приложений на п...   May 4 2018, 06:04
- - ViKo   Я - о своем. Все уже придумано до нас. https://ru....   May 4 2018, 08:57
2 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 12:14
Рейтинг@Mail.ru


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