1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #2208

    +52.5

    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
    #include "qscriptdebuggercodefinderwidgetinterface_p.h"
    #include "qscriptdebuggercodefinderwidgetinterface_p_p.h"
    
    QT_BEGIN_NAMESPACE
    
    QScriptDebuggerCodeFinderWidgetInterfacePrivate::QScriptDebuggerCodeFinderWidgetInterfacePrivate()
    {
    }
    
    QScriptDebuggerCodeFinderWidgetInterfacePrivate::~QScriptDebuggerCodeFinderWidgetInterfacePrivate()
    {
    }
    
    QScriptDebuggerCodeFinderWidgetInterface::~QScriptDebuggerCodeFinderWidgetInterface()
    {
    }
    
    QScriptDebuggerCodeFinderWidgetInterface::QScriptDebuggerCodeFinderWidgetInterface(
        QScriptDebuggerCodeFinderWidgetInterfacePrivate &dd,
        QWidget *parent, Qt::WindowFlags flags)
        : QWidget(dd, parent, flags)
    {
    }
    
    QT_END_NAMESPACE

    Qt 4.6. Файл src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface .cpp, типичный образец исходного кода класса Qt.

    Lockal, 02 Декабря 2009

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

    +52.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
    void GAMEPLAYER::cCar::abandonCar(GAMEPLAYER::cPlayer* player){
    	for(unsigned int i=0;i<size();++i){
    		cBaseAnimManager * bam = get(i);
    		if(!bam->isCarRider())
    			continue;
    		cCarRider* rdr = (cCarRider*)bam;
    		if(rdr->gScript()==player->gScript()){
    			delete rdr;
    			storage.erase(i);
    			--i;
    		}
    	}
    }

    НЕ time-critical код из некоторой игры
    Наблюдаем:
    1) непониманием того, зачем нужно наследование
    2) плохо пахнущие имена переменных

    generalgda, 16 Сентября 2009

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

    +52.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
    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
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    //разметка матрицы
    
     while ((founded==1)&&(mat[nx][ny]<=0)) {
      founded=0;
      iii=y-i;
      while (((i==0)&&(iii==y))||((iii<=y+i))){
       ii=x-i;
       while ((ii<=x+i)){
    	if ((mat[ii][iii]==i)&&((ii<70)&&(ii>=0))&&((iii<70)&&(iii>=0))) {
    	 bii=ii;
    	 biii=iii;
    	 if ((mat[bii+1][biii]==-1)&&(bii+1<70)&&(bii+1>=0)) {
    	  mat[bii+1][biii]=i+1;
    	  founded=1;
    	 }
    	 if ((mat[bii-1][biii]==-1)&&(bii-1<70)&&(bii-1>=0)) {
    	  mat[bii-1][biii]=i+1;
    	  founded=1;
    	 }
    	 if ((mat[bii][biii+1]==-1)&&(biii+1<70)&&(biii+1>=0)) {
    	  mat[bii][biii+1]=i+1;
    	  founded=1;
    	 }
    	 if ((mat[bii][biii-1]==-1)&&(biii-1<70)&&(biii-1>=0)) {
    	  mat[bii][biii-1]=i+1;
    	  founded=1;
    	 }
    	}
    	ii++;
       }
       iii++;
      }
      i++;
     }
     if (mat[nx][ny]>=0) {
      if ((nx==40)&&(ny==57)) {
       nx=nx;
      }
      ik=i;
    
      ii=nx;
      iii=ny;
      //поиск пути
    
      while (ik>1) {
       if ((mat[ii-1][iii]==ik-1)&&(ii-1<70)&&(ii-1>=0)) {
    	ii--;
    	mat[ii][iii]=-3;
       }
       if ((mat[ii][iii-1]==ik-1)&&(iii-1<70)&&(iii-1>=0)) {
    	iii--;
    	mat[ii][iii]=-3;
       }
       if ((mat[ii+1][iii]==ik-1)&&(ii+1<70)&&(ii+1>=0)) {
    	ii++;
    	mat[ii][iii]=-3;
       }
    
       if ((mat[ii][iii+1]==ik-1)&&(iii+1<70)&&(iii+1>=0)) {
    	iii++;
    	mat[ii][iii]=-3;
       }
       ik--;
      }
       ax=ii*10+5;
       ay=iii*10+5;
      //out_to_file(mat,"d:\\out.txt");
      i++;
       ii=0;
       iii=0;
       while ((iii>-1)&&(iii<70)){
    	ii=0;
    	while ((ii>-1)&&(ii<70)){
    	 if ((mat[ii][iii]>-1)||(mat[ii][iii]==-3)) {
    	  mat[ii][iii]=-1;
    	 }
    	 ii++;
    	}
    	iii++;
       }
      nx=ax;
      ny=ay;
     } else ...
     }

    Разметка матрицы, Поиск Пути.

    guest, 08 Декабря 2008

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

    +52

    1. 1
    #include <boobs_1_57_0/boost/range.hpp>

    laMer007, 24 Марта 2015

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

    +52

    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
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    void ArmInterface::dispatchMessage(QString name, QJsonArray args)
    {
        //флаг того что мы не смогли обработать
        bool notCallbacks = true;
        //проходим по всем методам( которые кстати можно создать в рантайме )
        for( int i = 0; i < metaObject()->methodCount() ; i++ )
        {
            QMetaMethod method = metaObject()->method( i);        
            
            //имя метода подходит под имя под сообщение от сервера? Прекрасно проверяем дальше.
            if ( method.name() != name )
            {
                qWarning() << "method.name() != name" << " -> " <<method.name() << " != " << name;
                //так как метод не найден мы просто выйдем отсюда, не дожидаясь ничего плохого
                continue;            
            }
            //метод у нас публичный? Если да то можно запускать обработку иначе заявим что низя
            if ( method.access() != QMetaMethod::Public )
            {
                qWarning() << "Method " << method.name()<< " not public!";
    #ifdef IGNORE_NOT_PUBLIC_METHOD
                continue;
    #endif
            }
            //несовдатает количество аргументов? Хватит это терпеть пишем warning, и если надо выходим из этого диспатчера
            int countParams = method.parameterCount();
            if ( args.count() != method.parameterCount() )
            {
                qWarning() << "Method " << method.name() << " params count = " << method.parameterCount() << " and received args params count =  "  << args.count();
    #ifndef IGNORE_METHOD_PARAMS_COUNT
                continue;
    #endif
                //берем наименьшее количество параметров
                countParams = countParams > args.count() ? countParams : args.count();
            }
            
            //создание валидного QGenericArgument 
            auto genericArg = [ this, method, args ]( int index ) -> QGenericArgument{
                //out of range? 
                if ( args.count() <= index || 
                     method.parameterCount() <= index )
                    return QGenericArgument();
                void * data = 0;
                //сохраняем временный QVariant для дальнейшей более удобной работы с ним
                QVariant  temp = args.at( index ).toVariant();
                //попытка конвертирования типов. Если что-то не получается, пишем в лог. Мб надо будет сделать преждевременный выход, если сконвертировать не получается.
                if ( !temp.convert( method.parameterType( index) ) )
                {
                    qWarning()<< objectName() << " method : " << method.name() <<
                                 " Not convert " << method.parameterNames().at( index ) << args.at( index ).toVariant().typeName() << 
                                 " from " << args.at( index ).toVariant().typeName() << 
                                 " to " << QMetaType::typeName( method.parameterType( index) )  ;
                };
                //у нас есть такой аргумент? Если нет - то ничего не делаем
                if ( args.count() > index )
                {
                    data = QMetaType::create( method.parameterType( index ) , temp.data() );
                }
                const char * name = 0;
                //у нас есть имя аргумента и аргумент в него? Если чего-то нет - то ничего и не будем ничего делать
                if ( method.parameterNames().count() > index && data)
                    name = method.parameterNames().at( index ).data();
    
                return QGenericArgument(
                            name, 
                            data);
            };
            
            //тут можно вызывать! 
            method.invoke( this, 
                           //генерируем аргументы
                           genericArg(0),
                           genericArg(1),
                           genericArg(2),
                           genericArg(3),
                           genericArg(4),
                           genericArg(5),
                           genericArg(6),
                           genericArg(7),
                           genericArg(8),
                           genericArg(9));
            notCallbacks = false;
            //раз вызвали значит нашли подходящий callback, а следовательно искать дальше ненадо. Выходим нафиг.
            break;
        }
        //вызвали что -нить? Если вызвали то не вызываем ничего. А иначе идем в другую функцию - которая разбирается как раз с такими сообщениями.
        //Если надо перехватить совершенно все сообщения - перегружать функцию в которой находимся.
        if ( !notCallbacks )
            dispathUndefinedMessage( name, args );
    }

    Написал и мучаюсь - гавнокод или все таки нет.

    ахда, мне надо выучить русский )

    Dart_Sergius, 02 Марта 2015

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

    +52

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // round up the blockSize to fit an integer number of pointers...
    m_blockSize = static_cast<QMPoolSize>(sizeof(QFreeBlock));//start with one
    uint_fast16_t nblocks = uf16_1; //# free blocks in a memory block
    while (m_blockSize < static_cast<QMPoolSize>(blockSize)) {
        m_blockSize += static_cast<QMPoolSize>(sizeof(QFreeBlock));
        ++nblocks;
    }

    в догонку к #17616. делим на 4 с округлением, с помощью цикла.

    P.S. касты и цикл само собой разумеется в ж не нужны:
    m_blockSize = (blockSize + sizeof(QFreeBlock)-1) & ~(sizeof(QFreeBlock)-1);
    nblocks = m_blockSize / sizeof(QFreeBlock);

    Dummy00001, 12 Февраля 2015

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

    +52

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int QTabBarPrivate::indexAtPos(const QPoint &p) const
    {
        Q_Q(const QTabBar);
        if (q->tabRect(currentIndex).contains(p))
            return currentIndex;
        for (int i = 0; i < tabList.count(); ++i)
            if (tabList.at(i).enabled && q->tabRect(i).contains(p))
                return i;
        return -1;
    }

    currentIndex - видимо откат заплатил

    PS
    Cкоро всю Qt на говнокод заливать придется.
    Плохое настроение или хотите поржать - открывайте исходники Qt в случайном месте - поднимаете себе настроение идиотскими решениями - профит

    fsmoke, 23 Ноября 2014

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

    +52

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<typename T> Light *create_instance(args &parameters) { return new T(parameters); }
    static map<string, Light* (*)(args &)> light_factory;
    
    template<typename T> GeometricPrimitive * create_instance(args &parameters) { return new T(parameters); }
    static map<string, GeometricPrimitive* (*)(args &)> geometry_factory;

    Откопал в архиве студенческих времен. Ray Tracing. abstract factory по именам.

    codemonkey, 17 Ноября 2014

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

    +52

    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
    #include <iostream>
    using namespace std;
    
    void foo()
    {
        int i = 0xffffffff;
        cout << i << endl;
    }
    
    void bar()
    {
        bool b;
    	if(b)
    	{
    		cout << "true" << endl;
    	}
    	if(!b)
    	{
    		cout << "false" << endl;
    	}
    }
    
    int main()
    {
        foo();
        bar();
    	return 0;
    }

    http://rextester.com/HJRO12041

    DlangGovno, 26 Октября 2014

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

    +52

    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
    double cCompositeBlock::determinant4x4(double *d){ // WARNING It's not logically connected with class.
        return  d[3]*d[6]*d[9]*d[12]  -d[2]*d[7]*d[9]*d[12]-
                d[3]*d[5]*d[10]*d[12] +d[1]*d[7]*d[10]*d[12]+
                d[2]*d[5]*d[11]*d[12] -d[1]*d[6]*d[11]*d[12]-
                d[3]*d[6]*d[8]*d[13]  +d[2]*d[7]*d[8]*d[13]+
                d[3]*d[4]*d[10]*d[13] -d[0]*d[7]*d[10]*d[13]-
                d[2]*d[4]*d[11]*d[13] +d[0]*d[6]*d[11]*d[13]+
                d[3]*d[5]*d[8]*d[14]  -d[1]*d[7]*d[8]*d[14]-
                d[3]*d[4]*d[9]*d[14]  +d[0]*d[7]*d[9]*d[14]+
                d[1]*d[4]*d[11]*d[14] -d[0]*d[5]*d[11]*d[14]-
                d[2]*d[5]*d[8]*d[15]  +d[1]*d[6]*d[8]*d[15]+
                d[2]*d[4]*d[9]*d[15]  -d[0]*d[6]*d[9]*d[15]-
                d[1]*d[4]*d[10]*d[15] +d[0]*d[5]*d[10]*d[15];
    }

    Abbath, 16 Сентября 2014

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