1. PHP / Говнокод #16545

    +151

    1. 1
    2. 2
    3. 3
    4. 4
    // /vendor/composer/autoload_real.php
    // Строка 18
    if (NULL !== self::$loader) {
    // ...

    Composer видимо такой же мудрый как и Йода...
    ( http://en.wikipedia.org/wiki/Yoda_conditions )

    Запостил: volter9, 16 Августа 2014

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

    • там еще местами очень классные регулярки есть, практически при каждом упоминании пути употребляются
      Ответить
      • Там - это где?
        Ответить
        • в сорцах композера

          https://github.com/composer/composer/blob/6a1262e675b5c1c2c7b1cc58a14028f67885b880/src/Composer/Package/Archiver/HgExcludeFilter.php#L103
          Ответить
          • вот еще хорошо

            https://github.com/composer/composer/blob/2b36106168e89fa185dfa604a1666fd1b188384e/src/Composer/Command/GlobalCommand.php#L78
            https://github.com/composer/composer/blob/0ce0cf42e80d68f5cf5c766457536e2894e32ffc/src/Composer/Package/Package.php#L124
            https://github.com/composer/composer/blob/e77435cd0c984e2031d915a6b42648e7b284dd5c/src/Composer/Command/DiagnoseCommand.php#L328

            не знаю, насколько это было необходимо, но выглядит сногсшибательно
            Ответить
            • {\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}

              {global}
              {globa}
              {glob}
              {glo}
              наркоманы

              { (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x

              искать такое

              { \\/ .. \\/ .. \\/ .. \\/ .. \\/ }x

              {Configure Command(?: *</td><td class="v">| *=> *)(.*?)(?:</td>|$)}m

              ну это уже вменяемое

              {Configure Command </td><td class="v">gogogo</td>}m

              хотя...

              {Configure Command=>=>=>=>=>=>=>gogogo</td>}m
              Ответить
            • А я то думаю, почему иногда Composer так долго загружается...
              Ответить
          • итить мадрить, вот это регулярочка.

            \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\# парсить
            Ответить
    • чем плоха нотация Йоды?
      https://ru.wikipedia.org/wiki/%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1% 8F_%D0%99%D0%BE%D0%B4%D1%8B
      Ответить
      • В таком виде - нотация Йоды ради нотации Йоды. Поклонники радуются симметричности подхода для == и !=, грея пространство впереди себя; протестующие находят полную бессмысленность записи с !=, грея пространство позади себя.
        Ответить
    • На самом деле программисты сишкоблядских языков годами борются со своими же инструментами.
      Причем в данном случае имеем наслоение факапов, и я даже сказал бы фрактал неудачного дизайна:

      Идиотские ==,=== раз.

      Тот факт что у = есть сайд-эффект - оно возвращает значение. Это два.
      И не надо рассказывать о продвинутых способах копирования строк одним while. Это не мощь языка, это просто херня для детей: "о, сишка и так умеет!". После первых граблей и шишек, восторги быстро проходят.

      Неявное преобразование типа результата присваивания к bool - три. В некоторых языках это всё-таки исправили.

      Каждый проёб по отдельности не приводит к фатальным последствиям, однако все вместе дают нам то что имеем.
      Ответить

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