Няшная / Говнокод #3154 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
// народ на протяжении 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 = ". у библиотеки есть внешняя конфигурация на отсутствии коей она у них обламывалась постоянно. и исправить скрипты свои что бы чужая конфигурация не убивалясь им похоже религия не позволяет.

Запостил: Dummy00001 Dummy00001, (Updated )

Комментарии (27) RSS

    • ну блин не сидеть же и ныть о проблеме. что именно эти кадры делали на протяжении Н лет. вместо того что бы прогнать хотя бы раз под дебагером или вставить нормальное сообщение об ошибке, которое им бы сразу и сказало "library is uninitialized."
      Ответить
    • в основном и забывают когда код таким образом пишется, где-то поправил где-то забыл потом 2 часа ищещь где.
      >>> И как Вы предлагаете потом обрабатывать разные возможные коды ошибки?
      switch(xxx_init())
      Ответить
  • rc = libZ_init();
    if (rc != OK)

    Все бы норм было если бы херней не страдали, а писали как люди:
    if (libZ_init() != OK)

    Поназаводят стопицот переменных и виноватых ищут
    Ответить
    • И как Вы предлагаете потом обрабатывать разные возможные коды ошибки? Лично я предпочитаю писать как-то так

      {
          int rc = libX_init();
          if (rc != OK) 
          {
              /* error handling */
          }
      }
      {
          int rc = libZ_init();
          if (rc != OK) 
          {
              /* error handling */
          }
      }


      Лишние скобки и табуляция, конечно, не очень хорошо, зато защищает от нечаянного повторного использование переменной.
      Ответить
        • а что это? (вот только не надо про с++, вопрос серьозный)
          Ответить
          • Это - православное присваивание со сравнением. Пришло из злоебучих дебрей плейн си.
            Ответить
          • Только один хрен забудут присвоить результат rc - ситуация не изменилась!
            Ответить
            • От долбоёбства ничего не спасёт. Если так плохо с памятью, то кидай исключение, если производительности не жалко. О нём забыть тяжело.
              Ответить
      • >И как Вы предлагаете потом обрабатывать разные возможные коды ошибки
        switch еще не придумали?
        Ответить
        • Если ошибок несколько, тогда кейз рулит. Но, например, функция умеет возвращать нулл как ошибку, и всё остальное, как допустимый вариант. Тогда еботню городить не стоит, а возврат обработать бы неплохо. Как раз один if спасёт отца русской демократии. А возвращать коды ошибок, как мне кажется, моветон.
          Ответить
  • д,UB)ADK(K?O.M!N(OB"L)A E?L"C$D"B(Y"Q?F"C,OG,Z?D.G:B,X(C(O"A:M P,A)PO"X!I(O.K!B,R)O:X"F,M,RH?G V:C(E$N G,T)Y$L,V)L.A,G,C!B.K.I,H(KF X$U)LY:N M,RQ!X)D$B)D?M:F,O"R?X"K:IG?E"V$OUY(V)FPW!D L)R$M,AJ)B$Q(P!J H.T)Z.W:M.X XH,N"K.Z.CD:K?Q!L,O:X"P"V(C:VF)MM,I?XO:D?K"N$R,T X!T D)I C$K$Y(C?S.Q!C(R(I)J:R)L(B"I:D Y:R?G"MT!V(U"K)W.I(D Q(F(I?J"Q,O(Q(D:RБSTPXZOWKVMIPZFUACIPDDACOCMXBSUFLREISGVQVHKEIFHSIKMRDZJSJFVBHASBOCJKSSWFMCGYETFEPQLRNDHJIMITIGRJLYXUVFNOSGXNFXVODIBQYVFWPSIJFABADGVDFVKTLVWHKOPQOEGZKQTIZHXVCEQJZXVUDGXISRLEYMDZJWWLJFSXUZDNDHAZCUAMDQWFVQLQMEBGVRKTKAOKVDEJOUNOCVRAOMPXVCESPFBYOZRRELNEXZHTRRBTIQXCXRMEORTOVQUYUOZEIZODEPNCEQQXCCLRPGOYT
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8