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

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

    +70

    1. 1
    2. 2
    3. 3
    4. 4
    if(url.getProtocol().equals("http") || true)
    {
       // ...
    }

    Индийский код добрался и до Android...

    Highlander, 29 Ноября 2010

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

    +70

    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
    Map<Integer, ArrayList<?>> // filterId : filterParams
    {
    	//
    	// Фильтр занятости квартир (не вписывается в API, поэтому здесь заведены отдельные методы)
    	//
    	
        // хранит: showReserved, DateFrom, DateTo
        private ArrayList<?> reservedFilterParams
    
        public void onDateFilterChanged(Date dateFrom, Date dateTo, boolean showReserved)
        {
    	this.put(QuickFilters.FILTER_RESERVED_ID, reservedFilterParams)
    		
    	reservedFilterParams = ArrayUtils.getOrCreateArrayListWithElements(
    			this, QuickFilters.FILTER_RESERVED_ID, new Boolean(showReserved), dateFrom, dateTo )
    	
    	if (dateFrom == null && dateTo == null)
            {
                reservedFilterParams.set(0,new Boolean(true))
                this.remove(QuickFilters.FILTER_RESERVED_ID)
            }
        }
    
        public boolean doShowReserved()
        {
            return reservedFilterParams ? reservedFilterParams.get(0).booleanValue() : true
        }
    
        public Date getDateFrom()
        {
            return reservedFilterParams?.get(1)
        }
    
        public Date getDateTo()
        {
            return reservedFilterParams?.get(2)
        }
    
    }

    Язык Groovy, стиль - моя переходная форма от Java. Это я сам написал. Вообще мне даже нравится. Есть фильтры для поиска. У каждого фильтра есть только ему ведомые параметры. Приведенный код - это мапка для хранения того, какие пользователь выбрал фильтры и что в них установил.

    Есть API который я делаю, состоящий из типовых фильтров. Этот API автоматически юзает мапку через get/put. Но бывает, придумывается какой-то нетиповой фильтр, и его параметры приходится хардкодить в этой мапке. Короче, мне понравилась идея с мапкой, ведь даже если параметры захардкодены, то они всё равно пихаются в мапку. И читаемость для таких случаев навысоте.

    Bugdog, 20 Октября 2010

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

    +70

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    /**
     * Окно, которое реагирует на нажатие клавиши Esc
     * определенным образом (например, окно закрывается).
     * Для этого в потомках класса необходимо реализовать метод
     * doEscapeKeyAction(), который будет вызываться при нажатии
     * клавиши ESC.
     */
    public abstract class JEscFrame extends ProfilableFrame {
    ...
    }

    borka, 22 Августа 2010

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

    +70

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public int someGetCountMethod() {
            try {
                ResultSet rs2 = db.select("call someGetCountMethod('')");
                rs2.first();
                return rs2.getInt(1);
            } catch (Exception ex) {
                return 0;
            }
        }

    где-то откапал вот такое

    zlob.jc, 25 Мая 2010

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

    +70

    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
    for(int i = 0; i < s.length(); i++)
            {
                String c = s.substring(i, i + 1);
                if("_".equals(c) || " ".equals(c) || "-".equals(c))
                {
                    capitalize = true;
                    continue;
                }
                if(c.toUpperCase().equals(c))
                {
                    if(lastDecapitalized && !lastCapital)
                        capitalize = true;
                    lastCapital = true;
                } else
                {
                    lastCapital = false;
                }
                if(capitalize)
                {
                    if(p == null || !p.equals("_"))
                    {
                        result.append(c.toUpperCase());
                        capitalize = false;
                        p = c;
                    } else
                    {
                        result.append(c.toLowerCase());
                        capitalize = false;
                        p = c;
                    }
                } else
                {
                    result.append(c.toLowerCase());
                    lastDecapitalized = true;
                    p = c;
                }
            }

    Позор Jboss'овцам!
    это код из HibernateTools, теперь понятно почему оно такое глючное Г

    asdqwezx, 27 Августа 2009

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

    +69.9

    1. 1
    2. 2
    3. 3
    public void ejbPassivate() throws EJBException, RemoteException {
    		return;
    	}

    Истинный китайский девелопер никогда не доверяет компилятору! Ато если ж в функции тело пустое, мало ли, вдруг она никогда не возвратиться. Какой выход? Написать об ентом явно.

    cheap_chinese, 12 Августа 2009

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

    +69.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    vector<int> :: iterator itBegins = array.begin(); 
    vector<int> :: iterator itEnds = array.end();
    
    while(itBegins != itEnds)
    {
             pVec.pop_back();
             it++;
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    (исправленная версия XD )

    Zeks, 02 Ноября 2009

    Комментарии (19)
  9. PHP / Говнокод #1196

    +69.6

    1. 1
    2. 2
    $s = mysql_query('SELECT * FROM `nazva_stolbca` where `nazva_stolbca` = `$_GET['name']`'); 
    if ($s == '' ) { echo 'такого значения нет'};

    Я боюсь :(

    guest, 13 Июня 2009

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

    +69.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
    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
    #include <iostream>
    using namespace std;
    class MyException
    {
    public:
    	MyException(char *msg) { m_msg = msg; }
    	~MyException(){}
    	char *GetError(){return m_msg;}
    protected:
    	char *m_msg;
    };
    
    int main()
    {
    	int *buffer;
    	try
    	{
    		buffer = new int[255];
    		if (buffer == NULL)
    		{
    			MyException *exception = 
    					new MyException("Memory allocation failed!");
    			throw exception;
    		}
    		else
    			delete buffer;
    	}
    	catch (MyException *exception)
    	{
    		char *msg = exception->GetError();
    		cout << msg << endl;
    	}
    return 0;
    
    }

    Книга "Использование Viusal C++" Кейт Грегори. Глава 24 о предотвращении утечек памяти и работе с исключениями.

    ccoder, 20 Февраля 2010

    Комментарии (14)
  11. Java / Говнокод #2940

    +69.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
    List<Measure> meaList = q.getResultList();
            try
            {
                if (meaList.size() == 0)
                {
                    throw new Exception("Measure not found: "+_wsPrice.getMeasureIso());
                }
                else
                {
                    p.setMeasure(meaList.get(0));
                }
            }
            finally
            {
                meaList.clear();
            }

    А вот ещё порция паранойи от моего коллеги

    konsoletyper, 06 Апреля 2010

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