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

    +20

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    if( 
        ('node' == arg(0) ) && 
        is_numeric(arg(1) ) && 
        ($node = node_load(array('nid' => arg(1), 'status' => 1 ) ) ) &&
        ( 
            ('chapter' == $node->type) || 
            ('article' == $node->type) ||
            ('gall' == $node->type)
        ) && 
        isset($node->field_parentchapter) && 
        is_array($node->field_parentchapter) && 
        count($node->field_parentchapter) 
    ){
    /// blah blah
    }

    матан, или как сделать из кучи одинаковых if() один

    Запостил: brainstorm, 06 Декабря 2010

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

    • Матан-не матан, а лесенка-чудесенка из вложенных if'ов - тоже далеко не самое изящное решение. На мой взгляд, сие не смертельно, если каждое условие прокомментировать хотя бы парой слов, чтобы тому, кто будет поддерживать код (или самому себе спустя энное время), было легче в нём разобраться.
      Ответить
      • уже укоротился. три нижних пошли в обертку функциональную которая - поскольку ниже идет цикл где родитель берется точно также.
        может еще подрежу, хотя врядли.
        Ответить
        • Я бы разрезал на инициализации $node, вынеся её в отдельный оператор (впрочем, и так можно). isset при is_array не нужен. В остальном -- всё хорошо, годный код.

          Если всё это внутри цикла, можно заменить на последовательные "if(!...) continue;". Но необходимости в этом нет, дело вкуса.
          Ответить
          • изза говностиля сторонних модулей друпала я всегда проверки isset делаю - предупреждения на максимум всегда стоят :)
            у них часто неинициализированные переменные проверются if($a['b'] ) при том что логика может зависеть и от сущеставования $a как такового воообще.
            Ответить
    • brainstorm, ошиблись сайтом.
      Ответить
      • говнокод же :)
        Ответить
        • ололо, сперва доказательство "говнистости".
          Ответить
        • только вот вчера в проекте нашел такое.
          if (dName!=null){
                      if (isValid(dName)){
                          return true;
                      } else {
                          return false;
                      }
                  } else {
                      return false;
                  }

          наверное так надо писать?

          на мой взгяд код - отлично писан.
          только за отступ надо еще один минус опу
          Ответить
    • is_array($node->field_parentchapter) && count($node->field_parentchapter)
      --
      reset($node->field_parentchapter) !== false, не?
      Ответить
      • О, вот это бы сюда подошло. Использовать функцию с побочным эффектом, чтобы проверить на исключительное возвращаемое значение -- сильно!
        Ответить

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