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

    В номинации:
    За время:
  2. Куча / Говнокод #12179

    +128

    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
    data Mode = Start | Read | Skip | End
    data State = State Mode String String [String]
    
    space c = elem c [' ', '\n', '\r', '\f', '\t', '\v', '\160']
    
    end r     = State End "" "" r
    skip t r  = State Skip t "" r
    get t w r = State Read t w r
    start t   = State Start t "" []
    
    step (State Start at@(t:ts) w r)
    	| space t   = step $ skip at r
    	| otherwise = step $ get at w r
    
    step (State Read at@(t:ts) w r)
    	| space t   = step $ skip at $ r ++ [w]
    	| otherwise = step $ get ts (w ++ [t]) r
    
    step (State Skip at@(t:ts) _ r)
    	| space t   = step $ skip ts r
    	| otherwise = step $ get at "" r
    
    step (State Start "" _ r) = step $ end r
    step (State Read "" w r)  = step $ end $ r ++ [w]
    step (State Skip "" _ r)  = step $ end r
    
    step (State End _ _ r) = r
    
    words' text = step $ start text

    Решил все-таки выложить этот позор. Если есть предложения по улучшению - с радостью выслушаю.

    Fai, 23 Ноября 2012

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

    +22

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    class ClassA 
    {
    };
    class ClassB : private ClassA
    {
    public:
    	ClassA& AsClassA()
    	{
    		return *this;
    	}
    };

    Setry, 19 Ноября 2012

    Комментарии (42)
  4. Куча / Говнокод #11979

    +175

    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
    with Ada.Integer_Text_Io, Ada.Text_Io;
    use Ada.Integer_Text_Io, Ada.Text_Io;
    
    procedure Test is
    v : Long_Float := 26.0;
    v1 : float := 26.0;
    begin
       while (v<27.0) loop
             Put_Line("Value = " & Long_Float'image(v));
            v:=v+0.2;
       end loop;
       while (v1<27.0) loop
             Put_Line("Value = " & float'image(v1));
            v1:=v1+0.2;
       end loop;
    
    end;

    ideone.com/pXIhvY
    Безопасный военный язык, да.

    3.14159265, 23 Октября 2012

    Комментарии (42)
  5. JavaScript / Говнокод #11514

    +154

    1. 1
    2. 2
    3. 3
    function isEmptyStr(val) {
        return val == null || val === "";
    }

    glprizes, 01 Августа 2012

    Комментарии (42)
  6. Perl / Говнокод #11275

    −124

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    > cat 1.pl
    $owner = "Jack";
    print "This is $owner\n";
    print "This is $owner's house\n";
    >  perl 1.pl
    This is Jack
    This is  house

    The old package delimiter was a single quote, but double colon is now the preferred delimiter, in part because it's more readable to humans, and in part because it's more readable to emacs macros. It also makes C++ programmers feel like they know what's going on--as opposed to using the single quote as separator, which was there to make Ada programmers feel like they knew what was going on. Because the old-fashioned syntax is still supported for backwards compatibility, if you try to use a string like "This is $owner's house" , you'll be accessing $owner::s ; that is, the $s variable in package owner , which is probably not what you meant. Use braces to disambiguate, as in "This is ${owner}'s house" .

    bormand, 21 Июня 2012

    Комментарии (42)
  7. PHP / Говнокод #8753

    +163

    1. 1
    2. 2
    3. 3
    if ($linksCount == 0) $linksCount = -1; // for no error
    	$percent = round(($linksOkIndex/$linksCount)*100, 0);
    	if ($linksCount == -1) $linksCount = 0; // for no error

    Я так избегаю деления на ноль -)

    increazon, 06 Декабря 2011

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

    +1002

    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
    BOOLEAN ConvertSizeToStr(__int64 size,TCHAR *buf,DWORD buf_size_c)
    {
       double dsize;
       HRESULT hr;
     
       dsize=(double)size;
       if (size/1500000000000L>0) 
       {
          dsize/=1099511627776L;
          hr=StringCchPrintf(buf,buf_size_c,_T("%.2lf Тб"),dsize);
       }
       else if (size/1500000000L>0) 
       {
          dsize/=1073741824L;
          hr=StringCchPrintf(buf,buf_size_c,_T("%.2lf Гб"),dsize);
       }
       else if (size/1500000L>0) 
       {
          dsize/=1048576L;
          hr=StringCchPrintf(buf,buf_size_c,_T("%.2lf Мб"),dsize);
       }
       else if (size/1500>0) 
       {
          dsize/=1024;
          hr=StringCchPrintf(buf,buf_size_c,_T("%.2lf Кб"),dsize);
       }
       else
          hr=StringCchPrintf(buf,buf_size_c,_T("%I64d байт"),size);
     
       if (SUCCEEDED(hr))
          return true;
       else
          return false;
     
    }

    Конвертировать байты в КБ/МБ/ГБ

    azote, 05 Декабря 2011

    Комментарии (42)
  9. Java / Говнокод #8255

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // inside some method
    final DateFormat dateFormat = i18n.getDateFormat();
    synchronized (dateFormat) {
        formatedViolationDate = (violationDate != null) ?
        dateFormat.format(violationDate) : "";
    }

    i18n.getDateFormat() возвращает статический объект DateFormat, который может использоваться несколькими потоками. В руки бы накласть тому, кто это писал.
    Решение: getDateFormat() возвращает строку формата, объект формата создаем при каждом вызове.

    roman-kashitsyn, 20 Октября 2011

    Комментарии (42)
  10. PHP / Говнокод #7811

    +162

    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
    function validemail($email){
    
     if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email))
    
     return false;
    
    
    
     $email_array = explode("@", $email);
    
     $local_array = explode(".", $email_array[0]);
    
     for ($i = 0; $i < sizeof($local_array); $i++) {
    
      if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
    
      return false;
    
     }

    jQuery, 08 Сентября 2011

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

    +170

    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
    if(SCREEN_WIDTH==800)
    			{
    				fm1 = 62;
    				fm2 = 61;
    				top = 86;
    			}
    
    			if(SCREEN_WIDTH==1024){
    
    				    fm1 = 27;
    					fm2 = 26;
    					top = 78;
    			}
    			if(SCREEN_WIDTH==1680||SCREEN_WIDTH==1920){
    
    				       fm1 = 72;
    			           fm2 = 73;
    					   top = 81;
    			}
    			if(SCREEN_WIDTH==1280 || SCREEN_WIDTH == 2560){
    
    				       fm1 = 76;
    					   fm2 = 75;
    					   top = 77;
    			}
    				
    			if(SCREEN_WIDTH == 1366 || SCREEN_WIDTH == 1440){
    			        fm1=  67;
    			        fm2=  66;
    					top = 79;
    			}

    Это капля в море гавнокода одного из проектов на который меня посадили.
    Чуть менее 1000 багов открыто только по GUI.
    Все это дело рук одной девушки))

    BlaZe, 25 Июля 2011

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