1. Список говнокодов пользователя RankoR

    Всего: 3

  2. Java / Говнокод #10257

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int buttonState = R.id.power_widget_button_indic; // Зачем-то объявили лишнюю переменную, ссылающуюся на константу
    ImageView indic = (ImageView) mView.findViewById(R.id.power_widget_button_indic); // Но здесь используем константу, а не новую, более короткую переменную!
    if ((Settings.System.getInt(context.getContentResolver(), Settings.System.EXPANDED_HIDE_INDICATOR, 0)) == 1) {
    	indic.setVisibility(8); // Для установки видимости существуют константы View.VISIBLE, View.INVISIBLE и View.GONE, а циферка 8 вообще ни о чем мне не говорит
    } else {
    	indic.setVisibility(0); // И еще раз
    }

    Это - кусок кода из Android 4, вернее, из CyanogenMod 9. Репозиторий frameworks_base, файл packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/PowerButton.java. И такого говнокода в исходниках Android - полно :(

    RankoR, 13 Мая 2012

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

    +59

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    QByteArray icqMessage::convertToByteArray(const quint8 &d)
    {
    	QByteArray packet;
    	packet[0] = d;
    	return packet;
    }

    Обнаружено в сорцах qutim'а. Про memcpy разработчики, видимо, не слышали, также, как и про метод append() в классе QByteArray.
    А еще не совсем понятно, зачем функции для конвертирования байт-эррэев в цифры и обратно объявлены и реализованы В КАЖДОМ файле, где используются. Про #include файла, в котором один раз можно реализовать все функции, разработчики, наверное, тоже слышали мельком.

    RankoR, 23 Февраля 2010

    Комментарии (14)
  4. Си / Говнокод #2637

    +99.4

    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
    #include <iostream>
    
    int *sfirst_function(void);
    int *isecond_function(void);
    
    int * sfirst_function(void)
    {
    	int ilocal_to_first=11;
    	return &ilocal_to_first; // Возвращаем указатель на переменную, размещенную в стеке
    } 
    
    int *isecond_function(void)
    {
    	int ilocal_to_second=44;
    	return &ilocal_to_second; // ну и тут
    }
    void main()
    {
    	int *pi=sfirst_function();
    	printf("First Function = %d\n",*pi);
    	int *si= isecond_function();
    	printf("Second Function = %d\n",*si);
    }

    Найдено на античате, в топике "помощь с лабораторными"
    В этом конкретном примере, конечно, допустим возврат адреса локальной переменной, а вот в более крупном проекте автор столкнулся бы с нефиговой проблемой =)

    RankoR, 18 Февраля 2010

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