- 1
- 2
- 3
- 4
- 5
- 6
- 7
//Дефайн в некотором хэдере
#define _TAPI(b) do {BOOL _b = (BOOL)(b); if (!b) throw(system_exception(GetLastError())); } while (false);
//...
// И далее такое:
//...
_TAPI (::CreateProcess(0, (LPWSTR)m_process.c_str(), 0,
0, FALSE, CREATE_SUSPENDED, 0, 0, &si, &pi));
guest 15.01.2010 16:16 # 0
xaionaro 19.02.2010 07:24 # 0
В первую очередь ругаться, IMHO, надо лишь на сам алгоритм... А эстетические проблемы существуют в любом коде.
guest 15.01.2010 16:18 # −1
guest 15.01.2010 22:25 # 0
Такое название - уже говнокод.
ISith 15.01.2010 22:52 # 0
guest 15.01.2010 16:19 # 0
Тоесть такой код повсеместно?
guest 15.01.2010 16:20 # 0
А зачем цикл, но выполняющийся один раз?
ISith 15.01.2010 16:48 # 0
guest 15.01.2010 22:17 # 0
#define _TAPI(b) if (!((BOOL)(b))) throw(system_exception(GetLastError()));
Вполне себе справится.
guest 23.01.2010 21:53 # 0
if (condition)
_TAPI( Call1(...) );
else
_TAPI( Call2(...) );
do{}while(0) это старый трюк...
guest 28.01.2010 13:55 # 0
#define _TAPI(b) {if (!((BOOL)(b))) throw(system_exception(GetLastError())); }
И нет не какого висячего ифа.
homakov 15.01.2010 16:20 # −3
guest 15.01.2010 16:29 # +2
guest 15.01.2010 16:21 # 0
Странно. Такой говнокод и минусуют...
guest 15.01.2010 16:28 # 0
А тут так часто. Не поняв код записывают его в "неговно", минусуя.
А нужно тот код, что непонимаешь - сразу в говнокод запихивать, ибо код для людей и должен быть понятен в команде разаработчиков. А машина, если дивайс не встроенный, то все схавает. Да и оптимизаторы сейчас хорошие.
guest 15.01.2010 16:22 # 0
guest 15.01.2010 16:24 # 0
ХаХаХа. )))
Чего не так сделал?
#define _TAPI(b) if (!((bool)(b))) throw(system_exception(GetLastError()));
Хотя тоже говно...
ISith 15.01.2010 16:59 # 0
guest 15.01.2010 22:21 # +1
Не нужно такого утверждать, пока непрошёлся профлаером. Только узкие места требуют оптимизации. Сомневаюсь, что создание процесса - узкое место. Создание процесса в сотни раз дольше, чем конвертация из байта в 4 байта и обратно.
Улучшай алгоритм, а не делай бесполезную работу, котрую сделает оптимизатор. (с)
ISith 15.01.2010 22:57 # 0
Я реверсер по совместительству =) поэтому отлично знаю что во что компилируется =). А про не оптимально это я просто к слову сказал. Кстати по поводу каста BOOL->bool даже mvs компилятор варнинг дает =)
>>Улучшай алгоритм, а не делай бесполезную работу, котрую сделает оптимизатор. (с)
полностью согласен, от себя добавлю: "..может ничего оптимизировать вообще нахуй не стоит и никто этого не заметит"
guest 15.01.2010 23:07 # 0
Откуда знаешь, что не болезненна? Ты на то и программист, чтобы твой софт работал нормально, то есть нужно проверить и говорить точно, а не "сомневаюсь". Сколько уже таких на оптимизатор надеялись, ипаааать...
guest 16.01.2010 01:16 # 0
Знаю, потому что не больно.
>Ты на то и программист, чтобы твой софт работал нормально
Он будет работать гораздо хуже, если я оптимизирую в ущерб читаемости кода(качества кода), а это значит, что исправлю меньше ошибок и удленню разработку.
>Сколько уже таких на оптимизатор надеялись, ипаааать...
И сколько же? Разве для каких-то мат вычислений критично, а для всего остального - не нужно. Например, какая может быть оптимизация в данном случае при создании процесса? Идиотизм. Не нужна она там. Лучше меньше строчек кода написать.
ISith 15.01.2010 16:54 # 0
#define _TAPI(b) do {BOOL _b = (BOOL)(b); if (!_b) throw(system_exception(GetLastError())); } while (false);
>> m_process что сдесь значит?
да это совершенно не важно в контексте говнокода =)
>>Чего не так сделал?
>>#define _TAPI(b) if (!((bool)(b))) throw(system_exception(GetLastError()));
>>Хотя тоже говно...
да просто копипастил из
#define _TAPI_E(e) do {apierr _e = (e); if (_e) throw(system_exception(_e));} while(false);
да тож еще фича =)
а вообще использование таких макросов делает код более читаемым и понятным, чем постоянные ифы.
guest 15.01.2010 20:07 # 0
Неверю.
guest 15.01.2010 20:08 # 0
ISith 15.01.2010 23:01 # 0
Pencioner 16.01.2010 01:32 # 0
вот если бы его назвать как нить типа _THROW_IF_FALSE_API (ну неточно ибо я ж весь код не знаю, но смысл в том чтобы название не давало само по себе повода для размышлений человеку который код разбирает, например новому сотруднику и т.п.)
короче как и большинство вещей все есть палка о двух концах, макросы в том числе...
guest 15.01.2010 22:23 # 0
guest 15.01.2010 22:27 # 0
>да это совершенно не важно в контексте говнокода =)
Для меня важно. И да. Такое неговорящее название - тоже говнокод.
ISith 15.01.2010 23:04 # 0
guest 16.01.2010 17:50 # 0
guest 18.01.2010 13:41 # 0
guest6 04.09.2023 19:38 # 0