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

    +55.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
    class cCar: public GAMEPLAYER::cPlayerRef, public cScrObject,
    	public IspSetOnParkingPlace<GAMEPLAYER::cCar>, 
    	public IspCheckLoadedState<GAMEPLAYER::cCar>,
    //	public IspUseInitialPositioning<GAMEPLAYER::cCar>,
    	public IspSetVelocity<GAMEPLAYER::cCar>,
    	public IspTracetoPosition<GAMEPLAYER::cCar>,
    	public IspChangeVehicle<GAMEPLAYER::cCar>,
    	public IspChasePlayer<GAMEPLAYER::cCar>,
    	public IspRaceParamsPlayer<GAMEPLAYER::cCar>,
    	public IcallbackParked<GAMEPLAYER::cCar>,
    	public ALTERNATIVEK::cstore_this<GAMEPLAYER::cCar>
    { //... дальше не интересно

    Вот такой суровый cCar :)

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

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

    +52.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    void SomeFunction(SomeClass* cls)
    {
        std::auto_ptr<SomeClass> tmp(cls);
        SomeObject.SomeMethod(tmp.release());
    }

    несколько раз видел такое в разных вариациях (поэтому вместо копи-пасты - абстракция).
    смысл сей конструкции упорно ускользает от меня :)

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

    Комментарии (22)
  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# / Говнокод #1849

    +129.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
    // IPrincipal Implementation
    public bool IsInRole(string role)
    {
      return Array.BinarySearch( _roles, role ) >=0 ? true : false;
    }
    public IIdentity Identity
    {
      get
      {
        return _identity;
      }
    }

    Взято из Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication (http://msdn.microsoft.com/en-us/library/aa302401.aspx)

    Step 4. Create a Class that Implements and Extends IPrincipal
    6. Implement the IsInRole method and Identity property defined by the IPrincipal interface as shown below.

    mikle.smirnov, 16 Сентября 2009

    Комментарии (15)
  5. PHP / Говнокод #1848

    +147.7

    1. 1
    $this->view->isAdmin = ($auth->getIdentity()->role_id == 1) ? true : false;

    Называется: "заработался".
    Написал и только потом дошло.

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

    Комментарии (6)
  6. PHP / Говнокод #1847

    +185.3

    1. 1
    echo "Время генерации: 0.0".rand(10,99)." сек.";

    Без комментариев))) Я под столом))

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

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

    +60.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
    void CExeTuner::ResFill2Tree(uchar *baddr, uchar *addr, TRes *now, int level)
    {
    	int len;
    	now->size1=*(uword *)(addr+0x0C); now->size2=*(uword *)(addr+0x0E);
    	if (now->size1+now->size2) now->mas=new TRes * [(now->size1+now->size2)];
    	ulong long1,long2;
    	for (int i=0; i<(now->size1+now->size2); i++)
    	{
    		now->mas[i]=new TRes;
    		now->mas[i]->back=now;
    		now->mas[i]->name=new char [32];
    		now->mas[i]->mas=NULL; now->mas[i]->data=NULL;
    		long1=*(ulong *)(addr+0x10+(i<<3));
    		long2=*(ulong *)(addr+0x14+(i<<3));
    		if (long1&0x80000000) {
    			long1&=0x7FFFFFFF;
    			now->mas[i]->isname=true;
    			len=*(uword *)(baddr+long1);
    			now->mas[i]->rname1=new uchar [len*2+2+1];
    				now->mas[i]->rname1[len*2+2]=0;
    				memcpy(now->mas[i]->rname1,baddr+long1,len*2+2);
    			now->mas[i]->name=new char [len+1];
    				now->mas[i]->name[len]=0;
    				for (int j=0; j<=len; j++)
    				now->mas[i]->name[j]=now->mas[i]->rname1[(j+1)*2];
    		} else {
    			now->mas[i]->isname=false;
    			now->mas[i]->rname2=long1;
    			if (!ResNumToStr(long1,now->mas[i]->name,level)) _itoa(long1,now->mas[i]->name,10);
    		}
    		if (long2&0x80000000) {
    			long2&=0x7FFFFFFF;
    			now->mas[i]->isdir=true;
    			ResFill2Tree(baddr, baddr+long2, now->mas[i], level+1);
    		} else {
    			now->mas[i]->isdir=false;
    			now->mas[i]->size1=*(ulong *)(baddr+long2+4);
    			now->mas[i]->data=new uchar [now->mas[i]->size1];
    			if ((*(ulong *)(baddr+long2)+now->mas[i]->size1)>(*ExeMain.ResDirAddrOBJ+*ObjMas[ExeMain.ResPosInObj].size))
    			{ now->mas[i]->data=NULL; now->mas[i]->size1=0;
    			} else memcpy(now->mas[i]->data,baddr-*ExeMain.ResDirAddrOBJ+*(ulong *)(baddr+long2),now->mas[i]->size1);
    		}
    	}
    }

    Древнющий проект откопал))
    Метод извлекает все ресурсы из PE файла в структуру типа дерево))

    k06a, 15 Сентября 2009

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

    +103.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public Parameter()
                {
                    _name = new String((char[])null);
                    Value = new String((char[])null);
                }

    Вот такой забавный метод инициализации пустой строки обнаружил в чужом коде 0_о

    samuilovaa, 15 Сентября 2009

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

    +112.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
    procedure TForm1.Button2Click(Sender: TObject);
    var
    result  : Tdatetime;
    begin
    Result := EncodeDate(1970, 1, 1) + ((strtofloat(edit26.Text)+(strtofloat(edit2.Text)*3600)) / 86400); {86400=No. of secs. per day}
    
    edit23.Text := formatdatetime('d', Result);
    edit24.Text := formatdatetime('m', Result);
    edit25.Text := formatdatetime('yyyy', Result);
    edit27.Text := formatdatetime('h', Result);
    edit28.Text := formatdatetime('n', Result);
    edit29.Text := formatdatetime('s', Result);
    edit30.text := datetimetostr(result);
    form1.ActiveControl := edit30;
    end;
    
    
    procedure TForm1.Button3Click(Sender: TObject);
    var
      x,y      : extended;
    begin
    edit12.Text := formatdatetime('d', datetimepicker2.date);
    edit17.Text := formatdatetime('m', datetimepicker2.date);
    edit18.Text := formatdatetime('yyyy', datetimepicker2.date);
    x := (EncodeDate(strtoint(edit18.text), strtoint(edit17.text), strtoint(edit12.text)) - EncodeDate(1970, 1, 1)) * 86400 ;
    y := (strtoint(edit20.text)*3600) + (strtoint(edit21.text)*60) + strtoint(edit22.text);
    x := x+y-(strtofloat(edit1.Text)*3600);
    edit19.Text := floattostr(x);
    form1.ActiveControl := edit19;
    end;

    Особенно старательный ковнокодер, умудрился растянуть на 30 строк то, что реально заняло у меня 8.
    ну я не говорю еще про большую описательную часть его кода.

    gorky, 15 Сентября 2009

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

    +68.9

    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
    class imgSeq {
    public:
    	CvSeq* faces;
    	IplImage* img;
    	IplImage* small_img;
    	IplImage* gray;
    	CvMemStorage* storage;
    	int id;
    	imgSeq() {
    		CvSeq* faces = 0;
    		IplImage* img = 0;
    		IplImage* small_img = 0;
    		IplImage* gray =0 ;
    		CvMemStorage* storage = 0;
    		id = -1; //unassigned
    	};
    };

    Хотя бы id взаправду инициализирует

    Orfest, 15 Сентября 2009

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