Си диез / Говнокод #4830 Ссылка на оригинал

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
public void SendCommand(string command, bool fake)
{
    ...
    for (var tries = 0; tries < 2; tries++)
    {
        for (var i = 0; i < 2; i++)
            try
            {
                sended = m_Socket.Send(sendBytes);
                break;
            }
            catch (Exception e)
            {
                Log.Error(LogSys, "SendCommand: Xception on send command to server: {0}", e.Message);
                Thread.Sleep(m_Socket.SendTimeout);
                if (i == 10)
                {
                    Log.Error(LogSys, "SendCommand: cant send command in 10 tries.");
                    return;
                }
                continue;
            }
        ...
    }
    ...
}

Метод "отправил и забыл" ака "Почта России" казался ведущему разработчику способным решить задачу взаимодействия двух сетевых приложений. Возможно, в будущем он планировал написать код, который бы отслеживал изменения в логах и сообщал о найденных в них ошибках, но этот метод был обнаружен быстрее

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

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

    • Чё минусуете???
      Где логика этого кода.
      if (i == 10) шо за нахуй это?

      Я так понимаю автор хотел сделать метод который мог бы с определённом кол-ом попыток отправлять данные, но это пцзд просто
      Ответить
    • "10" - это видимо в двоичной системе...
      ("всё смешалось в доме Облонских" (с) )
      Ответить
    • Более того :
      for (var tries = 0; tries < 2; tries++) {
      ...
      if (i == 10)
      {
         Log.Error(LogSys, "SendCommand: cant send command in 10 tries.");
      Ответить
      • да, но есть еще и вложенный цикл, в котором собственно отправка и происходит, поэтому все правильно, считаем по ай. а в трае могут быть попытки, предположим, парсинга.

        m_Socket.SendTimeout придумали а something.RetryCount забыли. поэтому после рефакторинга полезли то двойки то десятки.
        Ответить
        • Понятно, что считают по "ай", и в условии "ай". Но переменным-то надо адекватные имена давать, тем более если текстом в лог об этом пишут. Потому что в данном случае должны быть либо циклы поменяны местами, либо :
          Log.Error(LogSys, "SendCommand: cant send command in 10 i-s.");
          Ответить
    • Ты не нутриш ангсоц.
      Неправильные глаголы - это костыль, они нарушают стройную структуру языка.
      Истинный программист должен их ненавидеть, поэтому sended.
      Ответить
  • не, не, надо так:
    public void SendCommandToRemoteComputer(string command, bool fake)
    ...далее по тексту...
    Ответить
    • public void ПодчинитьНепослушнуюМашину(string атата, bool наполномсерьезе)
      Ответить

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

Где здесь C++, guest?!

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


    8