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

    +3

    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
    constexpr Vector(Vector&& vector) noexcept :
                x(vector.x), y(vector.y), z(vector.z)
            {
                vector.x = vector.y = vector.z = T();
            }
    
            constexpr Vector& operator=(Vector&& vector) noexcept
            {
                if (this == &vector)
                    return *this;
    
                x = vector.x;
                y = vector.y;
                z = vector.z;
    
                vector.x = vector.y = vector.z = T();
    
                return *this;
            }

    jangolare, 13 Апреля 2016

    Комментарии (6)
  2. C++ / Говнокод #19810

    +1

    1. 1
    2. 2
    3. 3
    sector_t * s = &sectors[secnum];
    if (!s->floorplane.isSlope()) s->reflect[sector_t::floor] = arg1/255.f;
    if (!s->ceilingplane.isSlope()) sectors[secnum].reflect[sector_t::ceiling] = arg2/255.f;

    присвоил переменной и во второй раз не использовал

    UsernameAK, 13 Апреля 2016

    Комментарии (64)
  3. C++ / Говнокод #19809

    −3

    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
    bool* sdvig_vpravo(bool* mas) {
    	if (mas[0] == 1 && mas[1] == 0 && mas[2] == 0) {
    		mas[0] = 0;
    		mas[1] = 1;
    		mas[2] = 0;
    	}
    	else if (mas[0] == 0 && mas[1] == 1 && mas[2] == 0) {
    		mas[0] = 0;
    		mas[1] = 0;
    		mas[2] = 1;
    	}
    	else if (mas[0] == 0 && mas[1] == 0 && mas[2] == 1) {
    		mas[0] = 1;
    		mas[1] = 0;
    		mas[2] = 0;
    	}
    	return mas;
    }

    Кольцевой сдвиг на один элемент булевского массива размерности 3. Возможно удивитесь, но этот великий костыль я сотворил на полном серьезе.

    petr_koshka23, 12 Апреля 2016

    Комментарии (16)
  4. C++ / Говнокод #19807

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    //g++  4.9.3
    
    #include <iostream>
    
    int main()
    {
        for(int ang = 0; ang < 360; ang++)
        {
            int test = ang * 5981849;
            std::cout << test << std::endl;
        }
    }

    http://rextester.com/IHBA32841

    LispGovno, 12 Апреля 2016

    Комментарии (25)
  5. C++ / Говнокод #19804

    +1

    1. 1
    https://www.google.com/search?q=%D0%B2%D0%BE%D1%80%D0%B5%D1%86%D0%B8%D0%B8

    Насрали так, что все ссылки ведут на говнокод.
    Как эта херомантия называется в науке?
    3.14159265359, это ты придумал слово "вореции"?

    3_dar, 12 Апреля 2016

    Комментарии (52)
  6. C++ / Говнокод #19785

    +3

    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
    #if defined(OSVR_WINDOWS)
        static const auto SEARCH_PATH_ENV = "PATH";
        static const auto SEARCH_PATH_SEP = ";";
    #else
        static const auto SEARCH_PATH_ENV = "LD_LIBRARY_PATH";
        static const auto SEARCH_PATH_SEP = ":";
    #endif
    
    
    void wrappedPutenv(std::string const &val) {
    #ifdef _MSC_VER
                _putenv_s(SEARCH_PATH_ENV, val.c_str());
    #else // not microsoft runtime specific
                auto newValue = SEARCH_PATH_ENV + "=" + val;
                // Have to allocate new string because it becomes part of the
                // environment.
                char *newString = static_cast<char *>(malloc(newValue.size() + 1));
                std::copy(begin(newValue), end(newValue), newString);
    #endif
    }

    Момент, когда я считаю, что C++-ный auto -- чистое зло(строка 14).
    Код из OSVR-Vive, плагина к OSVR, который работает с HTC Vive.

    a1batross, 08 Апреля 2016

    Комментарии (21)
  7. C++ / Говнокод #19767

    +4

    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
    constexpr Fraction operator+(const Fraction& fraction) const noexcept
        {
            const Fraction max_fraction_by_denominator{denominator > fraction.denominator ? *this : fraction};
            const Fraction min_fraction_by_denominator{denominator < fraction.denominator ? *this : fraction};
            const bool is_sim_denominator = max_fraction_by_denominator.denominator %
                                            min_fraction_by_denominator.denominator == 0;
            int sim_denominator = is_sim_denominator ?
                max_fraction_by_denominator.denominator : (max_fraction_by_denominator.denominator *
                min_fraction_by_denominator.denominator);
            const int nominator1 = is_sim_denominator ? (min_fraction_by_denominator.nominator *
                max_fraction_by_denominator.denominator / min_fraction_by_denominator.denominator) :
                min_fraction_by_denominator.nominator * max_fraction_by_denominator.denominator;
            const int nominator2 = is_sim_denominator ? max_fraction_by_denominator.nominator :
                max_fraction_by_denominator.nominator * min_fraction_by_denominator.denominator;
            int nominators_sum = nominator1 + nominator2;
            int while_parts_sum = while_part + fraction.while_part;
    
            while (nominators_sum >= sim_denominator)
            {
                nominators_sum -= sim_denominator;
                ++while_parts_sum;
            }
    
            if (!nominators_sum)
                sim_denominator = 0;
    
            return {while_parts_sum, nominators_sum, sim_denominator};
        }

    jangolare, 06 Апреля 2016

    Комментарии (6)
  8. C++ / Говнокод #19759

    +2

    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
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    // TODO: Refactor to one call of 'refineIndexes'
      std::vector<float32_t> *refined_left_1_3 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l1) * ATT_3dB, INTERP_LINEAR, CROSS_RISE);
      std::vector<float32_t> *refined_right_1_3 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r1) * ATT_3dB, INTERP_LINEAR, CROSS_RISE);
      std::vector<float32_t> *refined_left_1_6 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l1) * ATT_6dB, INTERP_LINEAR, CROSS_FALL);
      std::vector<float32_t> *refined_right_1_6 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r1) * ATT_6dB, INTERP_LINEAR, CROSS_FALL);
      std::vector<float32_t> *refined_left_2_3 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l2) * ATT_3dB, INTERP_PARABOLIC, CROSS_RISE);
      std::vector<float32_t> *refined_right_2_3 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r2) * ATT_3dB, INTERP_PARABOLIC, CROSS_RISE);
      std::vector<float32_t> *refined_left_2_6 = rec.refineIndexes(LEFT_CHANNEL, std::get<1>(p_l2) * ATT_6dB, INTERP_PARABOLIC, CROSS_FALL);
      std::vector<float32_t> *refined_right_2_6 = rec.refineIndexes(RIGHT_CHANNEL, std::get<1>(p_r2) * ATT_6dB, INTERP_PARABOLIC, CROSS_FALL);
      
      bool exists_att_3dB = refined_left_1_3->size() > 0 && refined_right_1_3->size() > 0 && refined_left_2_3->size() > 0 && refined_right_2_3->size() > 0;
      bool exists_att_6dB = refined_left_1_6->size() > 0 && refined_right_1_6->size() > 0 && refined_left_2_6->size() > 0 && refined_right_2_6->size() > 0;
    
      if (exists_att_3dB || exists_att_6dB)  {
        float32_t rdTOA_l_3, rdTOA_r_3, rdBW_3, rdSW_3, rdTOA_l_6, rdTOA_r_6, rdBW_6, rdSW_6;
        if (exists_att_3dB && !exists_att_6dB) {
          rdTOA_l_6 = rdTOA_l_3 = refined_left_2_3->back() - refined_left_1_3->front();
          rdTOA_r_6 = rdTOA_r_3 = refined_right_2_3->back() - refined_right_1_3->front();
          rdBW_6 = rdBW_3 = refined_left_2_3->back() - refined_right_2_3->back();
          rdSW_6 = rdSW_3 = refined_left_1_3->front() - refined_right_1_3->front();
        } 
        else if (!exists_att_3dB && exists_att_6dB) {
          rdTOA_l_6 = rdTOA_l_3 = refined_left_2_6->back() - refined_left_1_6->front();
          rdTOA_r_6 = rdTOA_r_3 = refined_right_2_6->back() - refined_right_1_6->front();
          rdBW_6 = rdBW_3 = refined_left_2_6->back() - refined_right_2_6->back();
          rdSW_6 = rdSW_3 = refined_left_1_6->front() - refined_right_1_6->front();
        }
        else {
          rdTOA_l_3 = refined_left_2_3->back() - refined_left_1_3->front();
          rdTOA_r_3 = refined_right_2_3->back() - refined_right_1_3->front();
          rdBW_3 = refined_left_2_3->back() - refined_right_2_3->back();
          rdSW_3 = refined_left_1_3->front() - refined_right_1_3->front();
          rdTOA_l_6 = refined_left_2_6->back() - refined_left_1_6->front();
          rdTOA_r_6 = refined_right_2_6->back() - refined_right_1_6->front();
          rdBW_6 = refined_left_2_6->back() - refined_right_2_6->back();
          rdSW_6 = refined_left_1_6->front() - refined_right_1_6->front();
        }
        float32_t rdTOA_l = (rdTOA_l_3 + rdTOA_l_6) / 2f;
        float32_t rdTOA_r =(rdTOA_r_3 + rdTOA_r_6) / 2f;
        float32_t rdBW = (rdBW_3 + rdBW_6) / 2f;
        float32_t rdSW = (rdSW_3 + rdSW_6) / 2f;
    
        //TODO: Watch for group delay compensation!
        float32_t rdeltaTOA = (rdTOA_l + rdTOA_r - 2 * groupDelay) / (2.0 * AUDIO_SAMPLE_RATE_EXACT);
        float32_t rdeltaBlastWave = rdBW / AUDIO_SAMPLE_RATE_EXACT;
        float32_t rdeltaShockWave = rdSW / AUDIO_SAMPLE_RATE_EXACT;
        //..................................................
      if (sd_init_status == SD_OK && current_settings.log) logFile.close();
    
      refined_left_1_3->clear();
      refined_right_1_3->clear();
      refined_left_2_3->clear();
      refined_right_2_3->clear();
      refined_left_1_6->clear();
      refined_right_1_6->clear();
      refined_left_2_6->clear();
      refined_right_2_6->clear();
    
      delete refined_left_1_3;
      delete refined_right_1_3;
      delete refined_left_2_3;
      delete refined_right_2_3;
      delete refined_left_1_6;
      delete refined_right_1_6;
      delete refined_left_2_6;
      delete refined_right_2_6;

    50 часов без сна... Чувствую я пожалею завтра о том, что сегодня это написал.

    FMB, 06 Апреля 2016

    Комментарии (9)
  9. C++ / Говнокод #19753

    +4

    1. 1
    2. 2
    3. 3
    typedef class foo_c{
    ...
    } foo_t;

    Почему мне хочется использовать такой синтаксис?

    mittorn, 04 Апреля 2016

    Комментарии (22)
  10. C++ / Говнокод #19742

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    class Panel
    {
    // ...
    friend class Panel;
    // ...
    }

    Нашёл такое в хедерах VGUI1 -- игрового тулкита от Valve для Gold Source.
    Объясните, умные люди, зачем?

    a1batross, 01 Апреля 2016

    Комментарии (8)