"PHP" / Говнокод #5499 Ссылка на оригинал

0

  1. 1
  2. 2
//Функция some_function возвращает данные в формате var1=val1&var2=val2
parse_str(some_function());

Мой код примерно полуторагодовой давности.
Разбирал старые проекты встретил и подумал - говно или имеет право на жизнь?
Классическое

//Функция some_function возвращает данные в формате val1:val2
list ($var1, $var2) = explode(':', some_function())
ведь будет работать медленнее, не так ли? :)

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

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

    • Массив из двух элементов будет затратнее хранения двух переменных.
      Ответить
      • У вас с головой хорошо? Вы говорите о гребаных двух переменных, а рассуждаете о скорости.

        У похапистов вообще на тему скорости с головой непорядок - любой идиотский алгоритм они выдают за оптимизацию по скорости.
        Ответить
      • 1)Нужно делать не микро оптимизации, а оптимизации алгоритма.
        2)Нужно делать оптимизацию, только при наличии весомых оснований, если это требует каких-то затрат, по сравнению с более простым способом.
        Ответить
      • >Массив из двух элементов будет затратнее хранения двух переменных.

        Как будто explode не создает массив, предварительно изнасиловав строку с данными. Оптимизация, да.
        Ответить
        • рассмотрим запись:
          <?php
          $pair=explode('=',$line);
          list($key,$value)=explode('=',$line);
          внимание, вопрос:

          какая запись понятнее,
          $pair[0], $pair[1], или $key,$value?
          Ответить
            • Что мешает сделать это сразу, а не создавать лишний массив?
              Ответить
              • Я не знаю, что мешает вам сделать это сразу, а не упаковывать данные в строку, а потом парсить её обратно.

                Вы наверное вместо $x=expr... всегда пишете parse_str("x=".urlencode(expr...))?
                Ответить
                • А кто вам сказал, что я так делаю?
                  Мне вообще массив не нужен, поэтому функция возвращает строку, которая парсится parse_str.
                  Это намного быстрее, чем explode и занимает меньше памяти, чем массив.
                  Ответить
                  • Вы ошибаетесь, это может быть намного медленнее и требовать намного больше памяти (и скорее всего почти всегда). Не говоря уж о побочных эффектах.
                    Ответить
                      • Потеря типа. А если не используете urlencode -- то и возможные глюки вплоть до эксплойта.

                        Вот не пойму, что вам мешает прямо в функции присвоить результат данным глобальным переменным? Большей части недостатков избежали бы, с так волнующими вас скоростью и памятью тоже было бы лучше.
                        Ответить
                        • >А если не используете urlencode -- то и возможные глюки вплоть до эксплойта.
                          Функция возвращает строго определенные значения, в которых не может быть знака равно и амперсанда.

                          >что вам мешает прямо в функции присвоить результат данным глобальным переменным?
                          >глобальным переменным?
                          Ой, мама.
                          Ответить
        • В том-то и дело, что parse_str массив не создает, а explode - создает, вне зависимости от применения list массив в памяти будет создан.
          Ответить

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

Из-за тебя ушел bormand, guest!

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


    8