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

    +23.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $params = array (
            'host'     => $cfgMessageDb->host,
            'username' => $cfgMessageDb->username,
            'password' => $cfgMessageDb->password,
            'dbname'   => $cfgMessageDb->name,
            'persistent' => ( defined("USE_PERSISTENT_CONNECTION") && USE_PERSISTENT_CONNECTION ) ? true : false
        );

    И вот таких кусков дохренища.

    Запостил: guest, 23 Декабря 2008

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

    • Анонимус:
      Вы еще не видели исходники ShopScript
      Ответить
    • Vov4ik:
      Что-то не вдуплюсь что здесь плохого? Чувак забил массив из конфига... Где прикол то?
      Ответить
    • Snark:
      все правильно, корректный, я бы даже сказал хороший код. Если вам не понятно почему последняя строла выглядит имеено так, а не ,скажем,
      'persistent' => USE_PERSISTENT_CONNECTION

      значит вам просто не хватает опыта.
      Ответить
    • страйко:
      ( defined("USE_PERSISTENT_CONNECTION") && USE_PERSISTENT_CONNECTION )

      и тернарного оператора не надо. Не совсем говнокод, просто не всем явно видно такие вещи.

      p.s. иногда сам такое пишу и потом приходится переделывать без ? и :
      Ответить
    • Keeper:
      Можно добавить преобразование типа в boolean:
      (boolean) (defined("USE_PERSISTENT_CONNECTION") && USE_PERSISTENT_CONNECTION)
      Ответить
    • ал:
      Учите программирование, а не постите сюда то что не в состоянии понять.
      Половину инда-кода на самом деле таковым не является, просто все свалить на индусов проще.
      Ответить
    • ал:
      условие:
      if (defined("USE_PERSISTENT_CONNECTION") && USE_PERSISTENT_CONNECTION) {
      //something
      }

      можно написать по другому:
      if (defined("USE_PERSISTENT_CONNECTION")) {
      if (USE_PERSISTENT_CONNECTION) {
      //something
      }
      }


      Условие expr1 && expr2 выполняется следующим образом:
      проверятся expr1 - если false - то expr2 просто не выполняется.
      а так - сначала проверили вкоде что константа есть а потом сверили ее значение.

      Похоже выполняется условие expr1 || expr2
      если expr1 = истенна - то второе проверять нет смысла и оно не проверятся.
      Ответить
    • Londeren:
      ал, ну ты и хуетищщу запостил однако
      глаза прям на логику компиляторов нам всем открыл, а мы то и не знали))
      Ответить
    • ал:
      Судя по тому что этот код еще тут - значит не знаете и до сих пор.
      Ответить
    • На самом деле причину, по которой я это сюда запостил, точно описал страйко в самом начале.
      Там действительно тернарный оператор абсолютно лишний.
      Ответить
    • vic:
      глупости, незадефайнутая константа является стрингой с длиной, равной ее названию, и поэтому любые проверки по варианту наличия дадут true - поэтому вполне правильмый и универсальный код для проекта, где девелопер не один и уровень их неизвестен.
      Ответить
    • >> если expr1 = истенна

      стена - там, убейся

      >> Судя по тому что этот код еще тут - значит не знаете и до сих пор.

      Судя по каменту ты не шибко догадливый. На страшный говнокод, конечно, не тянет, но можно было лучше. Твои цитаты тут совершенно не к месту.
      Ответить

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