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

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

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 07:31 pm
Powered by Dreamwidth Studios