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

    +149

    1. 1
    $txt['aeva_gallery'] = isset($txt['aeva_gallery']) ? $txt['aeva_gallery'] : 'Media';

    Кусочек языкового файла модуля медиагалереи

    Запостил: prodigy, 27 Марта 2011

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

    • показать все, что скрытоИ хуле? «?:» появился только в 5.3, так что нихуя не говнокод.
      Ответить
      • Когда бы он ни появился, он тут не нужен :)
        if (!isset($txt['aeva_gallery'])) $txt['aeva_gallery'] = 'Media';

        Зачем 2 раза одно и то же делать?
        Еще большее говно в том, что обращения делаются по каким-то строковым ключам неизвестно откуда полученым, но это, похоже норма для PHP - работать с динамическими массивами вместо объектов с задаными свойствами.
        Ответить
        • $txt['aeva_gallery']=$txt['aeva_gallery']?:'Media';

          так правильнее
          Ответить
          • Если моя память меня не подводит, то в PHP были предупреждения, если обращаться к неопределенному индексу массива. Так что ваш код... ну, по крайней мере чреват таким предупреждением. Кроме того, как на мой взгляд, конструкция типа if (condition) statement; вполне себе имеет право на существование не смотря на наличие операторов позволяющих ее заменить.
            Кроме того, если уж на то пошло и мы хотим игнорировать предупреждения, и нам не важно, что по этому индексу массива могло быть что-то, что может быть истолковано как false, тогда есть такой вариант, опять же, более приемлимый в виду того, что многие языки с похожей структурой его тоже поддерживают:
            $txt['aeva_gallery'] = $txt['aeva_gallery'] || 'Media';
            В отличие от последнего, который существует только в последних версиях языка, и, заметте, ни чем принципиально не лучше других предложеных.
            Ответить
    • Как в 5.3??? Окститесь, он давно уже.
      Ответить
      • видимо, имеется ввиду сокращенная конструкция
        Ответить
      • $txt['aeva_gallery']=$txt['aeva_gallery']?:'Media';
        Так делать можно только в 5.3
        Ответить
    • Oonitaz, причем здесь версия?
      Автор присваивает значение новой переменной(причем работать она будет как константа - ведь языковой файл, значения не будут меняться) путем проверки ее существования))
      1. Нечитабельность кода
      2. Путаница для переводчика(см. пункт №1)
      3. Избыточность, ведь проще некуда было бы сделать вот так:
      $txt['aeva_gallery'] = 'Галерея';
      Все! Проще некуда, зачем на пустом месте что-то усложнять? В этом я и увидел говно.
      Ответить
      • несогласен.
        $txt['aeva_gallery'] = 'Галерея';
        перепишет значение в любом случае, а сабж - только если такого индекса нет

        в общем, надо делать так: http://govnokod.ru/6100#comment79186
        Ответить
    • гойлерея
      Ответить

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