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

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

    +114

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    private List<PalletePath> killDupes(List<PalletePath> pathesNew) {
    	List<PalletePath> noDupes = new ArrayList<PalletePath>();
    	for (PalletePath tp : pathesNew) {
    		if (!noDupes.contains(tp)) {
    			noDupes.add(tp);
    		}
    	}
    	return noDupes;
    }

    Set? Не, не слышали.

    someone, 05 Марта 2013

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

    +63

    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
    package javaapplication2;
    import java.util.*;
    public class JavaApplication2 {
    
        public static void main(String[] args) {
              int temp; byte n;
             
              Scanner in = new Scanner(System.in);
              System.out.print("Введите разрядность искомых чисел: "); n = in.nextByte();
              
              if (n < 1 | n > 5) {
                System.out.println("Всего чисел: 0");
                return;
              }
              
              int i = (int)Math.pow(10, (n - 1)); // i - минимальное число. Пр: 1, 10, 100, 1000, 10000
              int count = 0;
                
              while ( (int)Math.log10(i*2) + 1 == n) { // Цикл выполняется пока кол-во цифр в числе i равно числу n.
                     boolean unqie = false;                             
                     temp = i;
                     int[] g = new int[10];
                     
                     for (int j = 0; j < (n*2); j++) // Цикл выполниться вдвое больше раз, чем разрядность искомых чисел.  
                     { 
                        g[temp % 10]++; 
                        if (g[temp % 10] > 1) { 
                            unqie = true;
                            break;
                        }
                        
                        temp /= 10; // Отбрасываем последнюю проверенную цифру.
                        if (temp <= 0) { // После того, как проверили первое число на уникальность, 
                            temp = i*2; // проверяем второе, которое в 2 раза больше первого.
                        }                           
                     }
                    
                     if ( unqie == false) { // Если число прошло проверку на уникальность, выводим его на экран. 
                      count++;
                      System.out.printf("%s %s \n", i, i*2);
                     }
                 
                 i++;
              }
              System.out.printf("Всего: %s numbers \n", count);           
        }                          
    }

    Моё. Программа выводит те числа, в которых, а также в умноженных на два числах, все цифры уникальные. Только начинаю изучать яву, не бейте, лучше обоссыте.

    Govnocoder#0xFF, 04 Января 2013

    Комментарии (42)
  4. Куча / Говнокод #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)
  5. 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)
  6. Куча / Говнокод #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)
  7. JavaScript / Говнокод #11514

    +154

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

    glprizes, 01 Августа 2012

    Комментарии (42)
  8. 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)
  9. 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)
  10. 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)
  11. 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)