Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
// народ на протяжении 5+ лет жаловался что постоянно что-то в этой библиотеке Х
// криво потому что часто (с их слов) попытки вызова ее функций просто обламываются:
int module_main_function()
{
int rc = 0;
// ...
rc = libX_do_work( ... )
if (rc != OK) {
// error!!!
}
// ...
}
// теперь заглянем в инициализацию этого модуля:
int module_init()
{
int rc;
// ... кучи дежурного копи-паста для инициализации скипнуты ...
rc = libZ_init();
if (rc != OK)
{
/* error handling */
}
rc = libY_init();
if (rc != OK)
{
/* error handling */
}
libX_init(); /* лопата */
if (rc != OK)
{
/* error handling */
}
rc = libA_init();
if (rc != OK)
{
/* error handling */
}
// ... и т.д. и т.п.
}
меня жалобы одного отдела начали потиху доставать что наша библиотека (назовем ее libX) у них в модуле постоянно не работает и шо ваабще за херня. как встроили ее - так и не работает. иногда. в 80+ модулях работает как часы - ни один другой отдел не жалуется - а вот в ихнем очень специальном модуле нет.
ну я к ним подвалил. они меня сразу в рабочую функцию тыкать стали - вот тут дескать не работает. я им методично: покаж где инициализация. я когда в инициализацию заглянул, почти сразу начал роготять (давно так не смеялся, наболело за годы).
им минут пять понадобилось что бы в своем копи-паст параде рассмотреть эту глюку.
ЗЫ ответ: на строке с лопатой, не хватает "rc = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.
ну блин не сидеть же и ныть о проблеме. что именно эти кадры делали на протяжении Н лет. вместо того что бы прогнать хотя бы раз под дебагером или вставить нормальное сообщение об ошибке, которое им бы сразу и сказало "library is uninitialized."
в основном и забывают когда код таким образом пишется, где-то поправил где-то забыл потом 2 часа ищещь где.
>>> И как Вы предлагаете потом обрабатывать разные возможные коды ошибки?
switch(xxx_init())
Если ошибок несколько, тогда кейз рулит. Но, например, функция умеет возвращать нулл как ошибку, и всё остальное, как допустимый вариант. Тогда еботню городить не стоит, а возврат обработать бы неплохо. Как раз один if спасёт отца русской демократии. А возвращать коды ошибок, как мне кажется, моветон.
дамми
>>> И как Вы предлагаете потом обрабатывать разные возможные коды ошибки?
switch(xxx_init())
пи
гость
Все бы норм было если бы херней не страдали, а писали как люди:
Поназаводят стопицот переменных и виноватых ищут
сидев
Лишние скобки и табуляция, конечно, не очень хорошо, зато защищает от нечаянного повторного использование переменной.
гость
if ((rc = libX_init()) != OK)
{
/* pizdec handling */
};
гость
switch еще не придумали?
гость
андерсон