[personal profile] ex0_planet
Дядя из позапрошлого поста сослался на свой собственный разбор того, почему использовать goto не только плохо, но еще и иногда хорошо.

И действительно, как вспомню сколько было потрачено моего времени на борьбу с запретом goto, с запретом множественных точек выхода, с венгерской нотацией (в майкрософтовском смысле), с обязательной проверкой всех аргументов в каждой функции… аж вздрогну. Сколько этих безумных, дебильных карго-культов накопилось в индустрии… и никто не считает нужным не то что бороться с ними, а даже и просто понять контекст в котором эти запреты были актуальны, а так… что-то где-то слышали, и при этом уже рвутся в бой писать правила игры. У них что, в детстве в песочнице всё время совочек отбирали, или что?

Date: 2014-08-03 09:15 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
Да здравствует MISRA!

Date: 2014-08-03 09:16 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
П.С. CamelCase?

Date: 2014-08-03 09:22 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
А как венгерская нотация существенно влияет на размер кода?

Date: 2014-08-03 09:27 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
Ааа, ну вот видишь, тут каждому свое :)
Меня например CamelCase выбешивает как утроение :))
Впрочем и венгерская нотация и еще много-много чего.
Мне, как человеку пишущему софт в 99% случаев под микроконтроллеры, да еще и без использования всяких там либ и HAL - вообще на "обычные, комповые" программы смотреть больно :)

Date: 2014-08-03 09:31 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
Я если честно не сильно в теме про это :)

Date: 2014-08-04 04:38 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
код становится слишком размазанным, примерно как речи политиков, где нужно вчитываться в страницу текста чтоб добыть из нее одно предложение.

плюс, венгерская нотация обычно ассоциируется с вин32апи, где вместо понятного

"FILE *f = fopen(path,"rw")" 

приходится писать что-то типа
HANDLE hMyHandle1 = CreateFile( lpszFileName, FILE_MODE_READ | FILE_MODE_WRITE, NULL_MODE1, FILE_SHARE_NONE, NULL_MODE2, NULL_TEMPLATE1, NULL_FOO, NULL_BAR );


что заметно менее читабельно.

Date: 2014-08-04 10:24 pm (UTC)
From: [identity profile] poor-sysadm.livejournal.com
чтобы обойтись без goto нужны break с меткой из блока, а не только из цикла, а этого нет почти ни в одном языке.
проверка аргументов может быть полезна для того, чтобы нормально журналировать ошибки а не производить segfault на каждый чих.
(или заёбывающий жабий null pointer reference во всяких говнопродуктах).

Date: 2014-08-05 03:22 pm (UTC)
From: [identity profile] poor-sysadm.livejournal.com
само по себе оно ошибок не выявит, но может помочь избежать расползания ошибки по функциям (косяк в одной, а вылетело в другой). Неужели лучше сидеть и в дебаггере проверять правильность аргументов вручную? :)
Ну а размер кода - препроцессор никто не отменял :)
Как обрабатывать - должно быть единое соглашение, возвращать E_INVALID_ARG, поднимать исключение, делать abort() - надо придерживаться единого стандарта, принятого для данного проекта.

Я на эту тему у себя писал, код проверок в грамотном коде на C занимает БОЛЬШУЮ часть объёма. Если write с неправильным файловым дескриптором вызывает kernel panic - это моветон :)
А любая пропущенная условно ненужная проверка рано или поздно окажется в security bulletin. Ибо если те функции, которые есть сейчас, всегда передают правильные аргументы, рано или поздно появится новая, которая в какой-то ситуации передаст неправильные.

Date: 2014-08-05 07:06 pm (UTC)
From: [identity profile] poor-sysadm.livejournal.com
ты предлагаешь, если провести аналогию, строить суперсовременные очистные сооружения, одновременно называя герметизацию стыков труб психопатическим задротством.

Date: 2014-08-05 07:23 pm (UTC)
From: [identity profile] poor-sysadm.livejournal.com
и очень зря :)
тут вопрос в затратах - стоит ли сдуру воткнутый электрочайник вырубившегося компа или хрен с ним. вопрос, хочешь ли ты об этом поговорить :)

Profile

ex0_planet

April 2023

S M T W T F S
      1
234567 8
910111213 1415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 26th, 2026 01:31 pm
Powered by Dreamwidth Studios