1. C++ / Говнокод #16856

    +57

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    bool operator ==( const CClass& lhs, const CClass& rhs )
    {
       bool rc = true;
    
       // No self-comparison...
       if ( &lhs != &rhs )
       {
          // Do not compare fields if result is already false...
          if ( rc )
          {
             rc = ( lhs.frameId() == rhs.frameId());
          }
          if ( rc )
          {
             rc = ( lhs.objectId() == rhs.objectId());
          }
          if ( rc )
          {
             rc = ( lhs.type() == rhs.type() );
          }
          if ( rc )
          {
             rc = ( lhs.transition() == rhs.transition() );
          }
          if ( rc )
          {
             rc = ( lhs.rotation() == rhs.rotation() );
          }
       }
       return rc;
    }

    Запостил: hedrok, 15 Октября 2014

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

    • // Do not compare fields if result is already false...
      Кто-то не слышал про short-circuit evaluation.
      Ответить
    • Меня одного плющит от if { one_line_statement; } ?
      Ответить
      • в данном случая я с тобой согласен
        но вообще автору бы выучить оператор &&
        Ответить
      • Это может быть код-стайл проекта, и по-моему его надо сделать единственным способом в принудительном порядке. Все вот эти альтернативы без скобочек - дорога в ад.
        Как в GO, например. Везде скобочки и вменяемые ошибки парсинга.
        Ответить
        • Вообще я согласен и с тобой тоже, но с оговоркой на else if, ибо в крестах нет такого единого оператора, в отличие от языков с принудительными скобочками.
          Ответить
          • >но с оговоркой на else if
            Само собой.
            Вот в том же GO после есле ожидается if или {.
            Так они за счёт принудительных скобок сделали понятным для парсера где оканчивается условие (аналог THEN) и тем самым выпилили другие обязательные, и гораздо более раздражающие меня скобки на условиях.

            Так что баланс скобок не только остался неизменным, но еще и упростил язык.
            Ответить
          • Не успел добавить в пост пример:
            http://ideone.com/f1A0IP
            Ответить
        • Разрешите несогласиться, сударь.

          По двум причинам:
          1. if (condition) { one_line_statement; } отбирает ценнейшее место на экране.
          2. Дуракам, неспособным писать one line statement без скобок, нет места в профессии и исскустве.
          Ответить
          • a=i, b=j, c[d++]=++a, break;
            Ответить
            • Reductio ad absurdum во всех полях
              Ответить
              • >Reductio ad absurdum во всех полях
                Никак нет. Typicam crucis scortum.
                Ответить
                • Я вот хочу один большой цикл с условиями посреди цикла
                  do while(cond){
                     ...
                  }do while(cond){
                     ...
                  }do while(cond){
                     ...
                  }do while(cond){
                     ...
                  }do while(cond);
                  Ответить
    • Может это для удобства отладки переписано? Просто так трейсить удобнее чем A==B&&T==U&&K!=C.
      Ответить
    • Убрать скобочки и будет норм.
      Ответить
      • bool operator == const CClass& lhs, const CClass& rhs 
        
           bool rc = true;
        
           // No self-comparison...
           if  &lhs != &rhs 
           
              // Do not compare fields if result is already false...
              if  rc 
                 rc =  lhs.frameId == rhs.frameId;
        
              if  rc 
                 rc =  lhs.objectId == rhs.objectId;
        
              if  rc 
                 rc =  lhs.type == rhs.type ;
        
              if  rc 
                 rc =  lhs.transition == rhs.transition ;
        
              if  rc 
                 rc =  lhs.rotation == rhs.rotation ;
        		 
           return rc;

        Норм?
        Ответить
    • показать все, что скрытоПо минусу пидорасам!!!
      Ответить
      • ...раздался хриплый голос со стороны параши.
        Ответить
    • показать все, что скрыто-
      Ответить
    • ДАВАЙТЕ ФЛУДИТЬ И ТРОЛЛИТЬ! ;)
      Ответить

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