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

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

    +28

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    std::string toString(std::function<std::string(T)> f = std::function<std::string(T)>()) {
       std::stringstream ss;
       if(f)
          ss << f(some_value);
       else
          ss << some_value;
       return ss.str();
    }

    an0nym, 03 Октября 2012

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

    +38

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    SkinDog* crateDog()
    {
      return reinterpret_cast<SkinDog*>( new Dog() );
    };
    void deleteDog( SkinDog* pDog)
    {
      delete reinterpret_cast<Dog*>( pDog );
    }
    
    EvilDog::bite() 
    {
      Dog* pDog = mutationDog();

    Не удержался, чтоб не запостить. Сами знаете откуда.

    LispGovno, 17 Сентября 2012

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

    −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
    //сравниваем два числа, функция не использует операторы < и > в целях переносимости на платформы, где они не поддерживаются
    auto intcmp( int a, int b ) -> int {
    	while( a && b ) {
    		a--;
    		b--;
    	}
    	if ( a == 0 && b == 0 ) // числа равны
    		return 0;
    	if ( a == 0 ) // a - меньше 
    		return -1;
    	if ( b == 0 ) // a - больше
    		return 1;
    	assert( true ); // да нам подсунули какие-то неправильные числа
    }

    К слову "auto foo( ... ) -> type" добавили в C++11.

    Fai, 27 Июня 2012

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

    +167

    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
    #define BREAKABLE_SECTION() for(;;)
    
    BREAKABLE_SECTION()
    {
        ::Packet * pPacket;
        res = ReadPacket(pPacket);
    
        if(ERR_OK == res)
        {
            res = pConstructor->PutPacket(pPacket);
    
            if(ERR_OK == res)
            {
                res = pConstructor->GetFrame(data);
            }else
            {
                //TODO:add handler of statuses other than err_ok
            }
    
            if (ERR_OK ==res)
            {
                break;
            }else
            {
                //TODO:add handler of statuses other than err_ok
            }
        }else
        {
            break;
        }
        break;
    }

    перешел в новый проект где предложили изучить существующий код в огромном объеме - а он весь из таких циклов

    openclgovno, 06 Октября 2011

    Комментарии (81)
  6. Java / Говнокод #8089

    +87

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static int[] toArray(int i){
    		int[] arr = new int[new String(Integer.toString(i)).length()];
    		for(int j=0;j<new String(Integer.toString(i)).length();++j){
    			arr[j] = Integer.valueOf(new Character(new String(Integer.toString(i)).charAt(j)).toString());
    		}
    		return arr;
    	}

    Запись цифр числа в массив.

    byob, 04 Октября 2011

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

    +121

    1. 1
    2. 2
    if (_flag_visible == true) obj.SetVisible();
    else if (_flag_visible == false) obj.SetInvisible();

    Crazzy, 05 Января 2011

    Комментарии (81)
  8. Си / Говнокод #3358

    +138

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    -(void)terminateSearchThreadInBackground:(NSNumber*)threadPtr
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        SearchThread* thread = (SearchThread*)[threadPtr unsignedLongValue];
    
        delete thread;
        [pool release];
    }

    И вновь я в шоке от нашего проекта. По какой-то неведомой причине передать в качестве параметра указатель на поток - это очень не трушно. Зато значительно более трушно - создать из него NSNumber, предварительно преобразовав к unsigned long...

    Highlander, 31 Мая 2010

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

    +23

    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
    long gr, ri, r1, r2, y, z, z_rev;
    	for (i = 2; i < qr_count; i++) {
    		step = 0;
     		ri = r[i];
    		gr = - mpz_fdiv_ui(lowM, pm[i][step]);
    		r1 = gr + ri;
    		r2 = gr + pm[i][step] - ri;
    		if (r1 < 0) {
    			r1 += pm[i][step];
    		}
    		if (r2 < 0) {
    			r2 += pm[i][step];
    		}
    		while (r1 < (long) Ml2) {
    			sieve[r1][i] += 1;
    			r1 += pm[i][step];
    		}
    		while (r2 < (long) Ml2) {
    			sieve[r2][i] += 1;
    			r2 += pm[i][step];
    		}
    		for (step = 1; step < degr[i]; step++) {
    			gr = - mpz_fdiv_ui(lowM, pm[i][step]);
    			y = ri*ri;
    			y -= Npm[i][step];
    			y = y/( (long) pm[i][step-1]);
    			if (y < 0) { y += pm[i][step]; }
    			z_rev = (ri<<1) % QR[i];
    			//?IOOA?EOO ?OI?AOEO IA UAAEEIE?AIEA
    			if (z_rev == 0) { y = 0; }
    			else {
    				z = 1;	
    				while ((z_rev*z % QR[i]) != 1) { z++;}
    				y *= z*pm[i][step-1];
    				y = y % pm[i][step];
    			}
    			ri -= y;
    			if (ri < 0) { ri += pm[i][step]; }
    			r1 = gr+ri;
    			r2 = gr+pm[i][step]-ri;
    			if (r1 < 0) { r1 += pm[i][step]; }
    			if (r2 < 0) { r2 += pm[i][step]; }
    			while (r1 < (long) Ml2) {
    				sieve[r1][i] += 1;
    				r1 += pm[i][step];
    			}
    			while (r2 < (long) Ml2) {
    				sieve[r2][i] += 1;
    				r2 +=pm[i][step];
    			}
    		}
    	}

    Когда лучше, чтобы кода не было, чем, чтобы он был...

    guest, 26 Ноября 2008

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

    0

    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
    using KoKo.Property;
    
    namespace MyProject {
    
        public class Person {
    
            private StoredProperty<string> FirstName { get; }
            private StoredProperty<string> LastName { get; }
            public Property<string> FullName { get; }
    
            public Person(string firstName, string lastName) {
                FirstName = new StoredProperty<string>(firstName);
                LastName = new StoredProperty<string>(lastName);
                FullName = DerivedProperty<string>.Create(FirstName, LastName, (first, last) => $"{first} {last}");
            }
    
            public void SetFirstName(string firstName) {
                FirstName.Value = firstName;
            }
    
        }
    }

    3_dar, 04 Января 2022

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

    0

    1. 1
    Как крестьяне говна поели

    This function is defined as the RtlSecureZeroMemory function (see WinBase.h). The implementation of RtlSecureZeroMemory is provided inline and can be used on any version of Windows (see WinNT.h.)

    Use this function instead of ZeroMemory when you want to ensure that your data will be overwritten promptly, as some C++ compilers can optimize a call to ZeroMemory by removing it entirely.

    Petro-san, 10 Марта 2021

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