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

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

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static boolean areEquals(Object [] ... paires){
            for(Object [] paire : paires){
                if(paire[0] == null || !paire[0].equals(paire[1])){
                    return false;
                }
            }
            return true;
        }

    Целый день убил из-за этого говна

    roman-kashitsyn, 02 Марта 2012

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

    +67

    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
    @Transactional(readOnly = true)
        public Employee getByUsername(String username) throws SecurityException {
            Employee employee = employeeDaoDb.getByUsername(username);
    
            if (employee != null) {
                return employee;
            }
    
            employee = employeeDaoLdap.getByUsername(username);
    
            if (employee != null) {
                if (employee.getFirstName() == null && employee.getFamilyName() == null) {
                    employee.setFirstName(employee.getUsername());
                }
                return employeeDaoDb.save(employee);
            }
    
            return null;
        }

    Grig, 07 Февраля 2012

    Комментарии (4)
  4. Java / Говнокод #8169

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    for (char c = '0'; c <= '9'; c++) {
    	// personally, I like java better than c or c++
    	RANDOM_PASSWORD_CHARS[i++] = c;
    }

    lucidfox, 12 Октября 2011

    Комментарии (10)
  5. Куча / Говнокод #6666

    +67

    Адский пони

    Corpus edimus, sanguis bibumus!

    Lure Of Chaos, 14 Мая 2011

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

    +67

    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
    package bytestring;
    
    public class Main {
    
        public static void main(String[] args) {
            String source = new String("A ya sdelal etu hren s perevorotom stroki s ispolzovaniem bayta");
            byte bytes[] = source.getBytes();
    
            bytes = reverse(bytes);
    
            String destination = new String(bytes);
            System.out.println(destination);
        }
    
        private static void switchBytes(byte[] array, int a, int b) {
            byte t = array[a];
            array[a] = array[b];
            array[b] = t;
        }
    
        public static byte[] reverse(byte[] bytes) {
            int i, j;
            int first, last;
            int length = bytes.length;
    
            //Переворачиваем всю строку
            for(i = 0; i < length / 2; i++)
                switchBytes(bytes, i, length - i - 1);
    
            //Переворачиваем каждое слово строки
            first = 0;
            for(i = 1; i <= length; i++)
                if(i == length || bytes[i] == ' ') {
                    last = i - 1;
                    for(j = first; j <= first + (last - first) / 2; j++)
                        switchBytes(bytes, j, first + last - j);
                    first = i + 1;
                }
            
            return bytes;
        }
    }

    hedgecrab, 28 Ноября 2010

    Комментарии (8)
  7. Java / Говнокод #3597

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    String a = 1234567890
    String b = 4
    def c = a.split(b)
    if c.size() > 1 //...

    Замена indexOf

    robin, 30 Июня 2010

    Комментарии (25)
  8. Java / Говнокод #3123

    +67

    1. 1
    2. 2
    3. 3
    public boolean isActive() {
            return !isKilling() && !isKilled() && !isKillPending();
        }

    Made in Estonia (part 2)

    bot225, 28 Апреля 2010

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

    +66.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
    #define DOIT(why, doit) !(why) || ((doit), (why))
    ...
    #define SAFEDOIT(why, doit, ob)\
        try\
        {\
            DOIT((why), (doit));\
        }\
        catch(...)\
        {\
            DOIT((ob), (ob)->Print(__FUNCTION__));\
        }
    ...
    // где-то в коде:
    SAFEDOIT ( ( DOIT ( pScrollBar->IsKindOf ( RUNTIME_CLASS ( CSimpleCtrl ) ) , OnPlay ( 0 ) ) ,
            DOIT ( pScrollBar->IsKindOf ( RUNTIME_CLASS ( CSeekCtrl ) ) , OnSeek ( nPos ) ) ) ,
                CFrameWnd::OnHScroll ( nSBCode, nPos, pScrollBar ) , &log ) ;

    код вполне рабочий:)

    gg_, 11 Марта 2010

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

    +66.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
    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
    // Компилировать: g++ -o test reghead.cpp object1.cpp regtail.cpp main.cpp
    
    //================== object.h: ==================
    struct Object {
    	const char *name;
    	unsigned char props[0];
    };
    
    extern Object *head, *tail;
    enum {PROPTYPE_BYTE = 0x40, PROPTYPE_WORD = 0x80};
    enum {PROP_DESC = 1, PROP_LASTSTRING, PROP_COLOR, PROP_MASS, PROP_END = 0};
    
    #define DECLARE_OBJECT(name) \
    extern Object Object_##name, *name##_reg; \
    Object *name##_reg __attribute__((section("oreg"))) = &Object_##name;\
    Object Object_##name = {#name}; \
    namespace name##_props {
    
    #define PROP_BYTE(id, value) unsigned char id##_1 = id | PROPTYPE_BYTE, id##_2 = value;
    #define PROP_WORD(id, value) unsigned char id##_1 = id | PROPTYPE_WORD, id##_2[2] = {value & 0xff, value >> 8};
    #define PROP_STRING(id, value) unsigned char id##_1 = id; unsigned char id##_2[] = value;
    #define END_PROPS unsigned char final = PROP_END; }
    
    //================== reghead.cpp: ==================
    #include "object.h"
    Object *head __attribute__((section("oreg"))) = 0;
    
    //================== regtail.cpp: ==================
    #include "object.h"
    Object *tail __attribute__((section("oreg"))) = 0;
    
    //================== object1.cpp: ==================
    #include "object.h"
    
    DECLARE_OBJECT(object1)
    PROP_BYTE(PROP_COLOR, 14)
    PROP_WORD(PROP_MASS, 300)
    PROP_STRING(PROP_DESC, "description")
    END_PROPS
    
    //================== main.cpp: ==================
    #include <stdio.h>
    #include <string.h>
    #include "object.h"
    
    int main()
    {
    	Object **obj = &head;
    	while (++obj <= &tail) {
    		if (*obj == NULL)
    			continue;
    		printf("Object: %s\n", (*obj)->name);
    		unsigned char *props = (*obj)->props;
    		int id;
    		while ((id = *props) != PROP_END) {
    			if (id < PROP_LASTSTRING) {
    				char *value = (char *)props+1;
    				props = (unsigned char *)value + strlen(value) + 1;
    				switch (id) {
    				case PROP_DESC:
    					printf("    Description: %s\n", value);
    					break;
    				}
    			} else {
    				int value;
    				switch (id >> 6) {
    				case 1:
    					value = *((unsigned char *)(props+1));
    					props += 2;
    					break;
    				case 2:
    					value = *((unsigned short *)(props+1));
    					props += 3;
    					break;
    				}
    				switch (id & 63) {
    					case PROP_COLOR:
    						printf("    Color: %d\n", value);
    						break;
    					case PROP_MASS:
    						printf("    Mass:%d\n", value);
    						break;
    				}
    			}
    		}
    	}
    }

    Прошу прощения за длинный пример, но не мог не поделиться. Написано по мотивом кода из того же ZDaemon – примерно так там задаются и обрабатываются свойства объектов. Работает только с компилятором GCC. Если вы поняли, как это работает, а также почему подобный говнокод работает с gcc версии 3.2 и может зависать с более поздними версиями – можете по праву гордиться собой.

    Arseniy, 13 Февраля 2010

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

    +66.8

    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
    // Найдено глубоко в продакшн-коде некоего транслятора:
    HRESULT hr = S_OK;
    try {
          hr = ParseSection(sourceTemplate, output, CS_IF);
    }
    CATCH_CG_EXCEPTION(this, hr)
    CATCH_CG_EXCEPTION_END
    
    // далее смотрим определения этих чудо-макросов
    #define CATCH_CG_EXCEPTION(gen, hr) \
    catch (CHierCGException* e)  { \
         (gen)->WriteExceptionMessage(e); \
         if (e->m_bContinue) { \
                if (e->m_useHRESULT) hr = e->m_hResult; else hr = E_FAIL; \
         } \
         delete e; \
         if (!(e->m_bContinue))
    
    #define CATCH_CG_EXCEPTION_END \
          throw; \
    }

    Исключительно говнистая обработка исключений :-)

    Orfest, 27 Октября 2009

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