ДействиеСценарий / Говнокод #4580 Ссылка на оригинал

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
function requiredVersion(required) 
{ 
  version = getVersionNumber();
  if (version.nl < required.nl) return(false);
  if (version.nl > required.nl) return(true);
  if (version.n2 < required.n2) return (false);
  if (version.n2 > required.n2) return (true);
  if (version.n3 < required.n3) return (false); 
  if (version.n3 > required.n3) return (true);
  if (version.n4 < required.n4) return (false); 
  if (version.n4 >= required.n4) return (true);
}

Запостил: psina-from-ua psina-from-ua, (Updated )

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

  • Что-то какой-то бред, ибо нехера не пойму применение этого гк
    Ответить
    • Сравнение версий.
      Допустим, надо сравнить версию 1.2.3.4 с 1.3.4.5

      Версия 1.2.3.4 записывается так:
      version.n1 = 1;
      version.n2 = 2;
      version.n3 = 3;
      version.n4 = 4;

      Версия 1.3.4.5 записывается так:
      required.n1 = 1;
      required.n2 = 3;
      required.n3 = 4;
      required.n4 = 5;

      Ну и начинаем последовательно сравнивать числа (то есть поля n1, n2 ...).
      Если на определенном этапе числа не совпали, даем тру или фолс.
      Если совпали -- идём дальше.

      P.S автор не я))
      Ответить
      • А не такой уж и ГК получается)..

        Автор кода не знал про оператор || и не определил тип функции. Больше косяков не видю)
        Ответить
        • Если по-хорошему, то версии нужно хранить в строках ('1.2.3.4')
          В функции проверки нарезать строки версий по точкам в массивчики.

          Ну и пробегаться по массивчикам, сравнивая попарно элементы.

          Если какой-то массивчик слишком рано закончился, то считать недостающие элементы нулями.

          Тогда спокойно можно будет сравнить версии с разным числом точек,
          и само собой будет поддержка новых разрядов.

          ===
          но в, принципе, если не желания делать универсально, автору можно оставить этот код.
          Ответить
        • А как тут || помогло бы?
          Если не совпала очередная пара, то следующие пары мы вообще не смотрим.
          Ответить
          • Можно было-бы написать в этом духе:
            if (version.nl < required.nl || version.n2 < required.n2) return false;
            Ответить
            • Бред!
              2.0 < 1.1?
              Кстати, если мне не изменяет память, из-за вот таких ламерских проверок когда-то в винде то ли 95 то ли 98 minor версию в defin'ах SDK сделали 95 (98). Ибо иначе она (4.0) по мнению многих программ оказывалась младше, чем древняя 3.11.
              Правильное условие
              if ((version.n1 < required.n1) || (((version.n1 == required.n1) && (version.n2 < required.n2)) return false;
              Но для 4 компонент условие получится слишком монструозное.

              По-моему, данные код вполне нормальный, он вполне соответствует своей задаче и весьма понятный. Например, хранение версии в строке убивает контроль типов ибо "this is a wrong version" тоже строка и типа тоже версия.
              Ответить
  • Это, кстати, пример из книги "Macromedia Flash MX. Создание игр с помощью ActionScript"
    Ответить
  • напишите ваш вариант в двух словах пжл
    Ответить
      • правда интересно. я бы точно также сравнивал, только по-другому алгоритм бы написал
        Ответить
          • ну так смысл тотже. все гавно только в написании?
            Ответить
            • "Тогда спокойно можно будет сравнить версии с разным числом точек,
              и само собой будет поддержка новых разрядов."

              Здесь, что же будет если n3 есть null?
              Что надо делать если надо поддержать 5 разряд? заводить новое поле n5, и менять код функции?
              Ответить
              • ну какбе нет. достаточно версию писать в одном формате, где n3 будет 0, а не NULL.

                если конечно не подразумевается вывод версии для пользователя.
                Ответить

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

Переведи на "PHP", guest!

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


    8