Кресты / Говнокод #26953 Ссылка на оригинал

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
uint64_t stored_msg_id = _container_msg_id.get(ctrl_msg.sequence); // Получаем msg_id из мапы для связки сообщений
if (stored_msg_id)
    proto_fill(ctrl_msg, stored_msg_id); // если он там был то новому сообщению даем этот msg_id
else
    proto_fill(ctrl_msg);  // Иначе формируем новый msg_id

// Отсылаем сообщение 
...

// Если msg_id не был в _container_msg_id то произойдет попытка вставки msg_id полученного через proto_fill.
if (!stored_msg_id && !_container_msg_id.insert(ctrl_msg.sequence, ctrl_msg.msg_id))
{
    DEBUG(L, 0, "[%p] Can't store request's control message id (%llu) in bunch map" \
                ", response's msg_id will differ", this, msg.msg_id);
}

С точки зрения читабельности кода, в последнем ветвлении говнокод?

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

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

  • Х.з., я бы просто вложенные ифы ебанул вместо 11 строки. Не люблю сложную логику.
    Ответить
      • Да, сложно. Это же не просто геттер, который нихуя не делает. Это функция с сайд эффектом. И отдельным ифом мы это подчеркиваем.
        Ответить
        • то есть если бы там был не insert а get, то было бы ок?
          Ответить
            • а если в языке есть сахар, чтобы проперть не отличалась от метода (в руби они вообще не отличаются, в коко, питоне и C# для этого есть средства), то как бы ты поступил?

              Ну типа

              user.isAllowedToKurarekoo, а там может метод в базу ходит и делает апдейт
              Ответить
                • надо, не спорю

                  можем ли мы всегда считать, что проперть всегда без сайдэффектов?
                  Ответить
                  • я из js
                    в моем фреймворке геттеры должны быть чисыми по код стайлу и для мемоизации
                    статически это не заэнфорсишь так что придется по-старинке пиздить
                    Ответить
                    • Интересно, как это решают рубитсты: у них нету разницы между методом и проперти при вызове, но у булевых проперти принято добавлять в конце знак вопроса
                      Ответить
                        • if what_to_do.improve
                             petuh.improve
                          end

                          английский хуевый
                          Ответить
                                • запахло майкрософтом
                                  где еще так?

                                  >и не думаю что в руби есть интерфейсы
                                  ну да, там утка по идее

                                  можно эсмулировать модулем кидающим not implemented, но зачем
                                  Ответить
                                    • имхо нет

                                      хунгариан это про префиксы переменных, отражающие тип или семантику

                                      а IInterface и CClass я видел тока в C#, и MFC/COM вроде
                                      Ответить
                                        • ну вот у жабы и обжс такой нотации нету например
                                          и у скриптушни вроде тоже нет (хотя в тайпскприпте я не зна-- она же от микрософт)
                                          Ответить
                                            • ну мокрософт же

                                              в QT такого нет: там просто классы
                                              в ObjC (и вероятно в свифте?) есть двухбуквенный префикс вместо namespace: NS -- Cococa (от NextStep), UI от UIKit итд.
                                              В Java/Kotlin вообще префиксов нет. Тупо InputStream
                                              В питоне и руби тоже
                                              Ответить
                  • Я думаю да. Ну с погрешностью на какое-нибудь кеширование в кишках.

                    Т.е. логически геттер не должен иметь сайдэффектов. Физически они там могут быть, но я как юзер геттера не обязан об этом знать.
                    Ответить
              • Ну вроде как нормальная модель должна сохраняться в БД по вызову save().
                Ответить
  • Ага, неконсистентно расставляешь фигурные скобки....
    Ответить
    • Я не про расстановку скобок, а про сам if, ведь его для читаемости лучше заменить на
      А скобки по корпоративному стилю расставляются.

      if (!stored_msg_id)
      {
          if (!_container_msg_id.insert(ctrl_msg.sequence, ctrl_msg.msg_id)
          {
              DEBUG(L, 0, ...);
          }
      }
      Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8