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

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

    +122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    var product=dataContext.Products.Where(p=>p.Name == "SomeProductName")
    
    if (products.Count() != 0)
                {
                    return new Product
                    {
                        ProductId = products.First().AM_PRODUCT_ID,
                        ProductName = products.First().PRODUCT_NAME,
                        IsActive = products.First().IS_ACTIVE
                    };
                }

    this way of selecting product from table by its name generate 4 queries instead 1 ...

    O_O, 28 Февраля 2011

    Комментарии (39)
  3. Pascal / Говнокод #5629

    +102

    1. 1
    while dlg_SmplSpk.ShowModal = mrOk do ;

    Узрел такое! Срочно к себе в рецепты прогрессивного программирования!
    Сделано это для того, чтобы окно не закрывалось при подтверждении всех сделанных действий.
    Закрываться должно только при нажатии кнопочки "Закрыть".
    Отсюда непонятен ход мыслей автора сия творения.

    Grizzly, 11 Февраля 2011

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

    +161

    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
    /**
     * Standard QWidget Constructor
     */
    SeismicSelectionDG::SeismicSelectionDG(QWidget *parent) 
      : QDialog(parent), ui(new Ui::SeismicSelectionDG)
    {
    ...
    }
    
    /**
     * Destructor
     */
    SeismicSelectionDG::~SeismicSelectionDG()
    {
      if(ui) delete ui;
    }
    
    /**
     * Set title to dialog box
     * @param title The title for dialog box
     */
    void SeismicSelectionDG::setDialogTitle(const QString& title)
    {
      QDialog::setWindowTitle(title);
    }

    Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.

    kitaec, 09 Февраля 2011

    Комментарии (39)
  5. 1C / Говнокод #4949

    −133

    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
    Процедура БазоваяПриИзменении(Элемент)
    		Если ЭтаФорма.ЕдОтчетов = Истина Тогда
    			ЭтаФорма.ВДаллах = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		Иначе
    			ЭтаФорма.ВДаллах = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура ВДаллахПриИзменении(Элемент)
    		Если ЭтаФорма.ВДаллах = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура Ед_храненияОстПриИзменении(Элемент)
    		Если ЭтаФорма.Ед_храненияОст = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Ложь; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		КонецЕсли;	
    КонецПроцедуры
    	
    Процедура ВРубляхПриИзменении(Элемент)
    		Если ЭтаФорма.ВРублях = Истина Тогда
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.Ед_храненияОст = Ложь; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		Иначе
    			ЭтаФорма.ЕдОтчетов = Ложь; 
    			ЭтаФорма.ВРублях = Истина; 
    			ЭтаФорма.ВДаллах = Ложь; 
    		КонецЕсли;
    КонецПроцедуры

    Замечательная реализация радиобаттонов через флажки

    ingenuus, 16 Декабря 2010

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int i=0;
    for (i=0;i<2;)
    {cout<<"Enter M takoe 4to Bbl -> m>0 .\n ";
    cin>>M;
    if (M>0)
    i=76;
    }

    Из лабы однокурсника по C++.

    SemenBooxy, 29 Ноября 2010

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

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    std::vector<double> WBuffer;
    std::vector<double> CleanWBuffer;
    std::vector<Color> PixelBuffer;
    std::vector<Color> CleanPixelBuffer;
    
    void Scene3D::ClearBuffers()
    {
            const size_t n = static_cast<size_t>(ScreenSize[0] * ScreenSize[1]);
    
            memcpy(&*(WBuffer.begin()), &*(CleanWBuffer.begin()), n * sizeof(*(WBuffer.begin())));
            memcpy(&*(PixelBuffer.begin()), &*(CleanPixelBuffer.begin()), n * sizeof(*(PixelBuffer.begin())));
    }

    Быстрая очистка буферов.
    CleanWBuffer предварительно заполнен 0.0, CleanPixelBuffer предварительно заполнен нужным цветом.

    Можно было воспользоваться std::fill, но оно работает в несколько раз дольше.


    Пришлось так вот лезть в потроха std::vector. Доставляют подряд идущие & и *.

    burdakovd, 12 Ноября 2010

    Комментарии (39)
  8. PHP / Говнокод #4107

    +155

    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
    /**
         * Обновление информации о пользователе
         *
         * @param integer $user_id
         * @param array $data
         * @return Zend_Db_Statement_Pdo
         */
        public function updateProfile($user_id, $data)
        {
            // TODO: сделать человеческую валидацию
            $params = $keys = array();
    
            if ($data['login'] !== NULL) {
                $keys[] = 'u_login = ?';
                $params[] = $data['login'];
            }
    
            if (Zend_Validate::is($data['email'], 'EmailAddress')) {
                $keys[] = 'u_email = ?';
                $params[] = $data['email'];
            }
    
            if ($data['sname'] !== NULL) {
                $keys[] = 'u_sname = ?';
                $params[] = $data['sname'];
            }
    
            if ($data['name'] !== NULL) {
                $keys[] = 'u_name = ?';
                $params[] = $data['name'];
            }
    
            if ($data['fname'] !== NULL) {
                $keys[] = 'u_fname = ?';
                $params[] = $data['fname'];
            }
    
            if ($data['birthdate'] !== NULL) {
                $keys[] = 'u_birthdate = ?';
                $params[] = $data['birthdate'];
            } else {
                $keys[] = 'u_birthdate = NULL';
            }
    
            if ($data['city'] !== NULL) {
                $keys[] = 'u_c_id = ?';
                $params[] = (int) $data['city'];
            }
    
            if ($data['info'] !== NULL) {
                $keys[] = 'u_info = ?';
                $params[] = $data['info'];
            }
    
            if ($data['sign'] !== NULL) {
                $keys[] = 'u_sign = ?';
                $params[] = $data['sign'];
            }
    
            if ($data['sex'] === 'M' OR $data['sex'] === 'F') {
                $keys[] = 'u_sex = ?';
                $params[] = $data['sex'];
            }
    
            if ($data['subscribe'] === 'on' AND ($data['subtype'] === 'T' OR $data['subtype'] === 'H')) {
                $keys[] = 'u_subscribed = ?';
                $params[] = $data['subtype'] === 'T' ? 1 : 2;
            } else {
                $keys[] = 'u_subscribed = ?';
                $params[] = 0;
            }
    
            $sql = 'UPDATE users SET ' . implode(', ', $keys) . ' WHERE u_id = ' . (int) $user_id;
            $query = $this->db->query($sql, $params);
    
            $this->clearUserCache($user_id);
    
            return $query;
        }

    nergal, 26 Августа 2010

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

    +115

    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
    static final class Single extends Node {
            Node dup(boolean not) {
                if (not)
                    return new NotSingle(ch);
                else
                    return new Single(ch);
            }
            boolean study(TreeInfo info) {
                info.minLength++;
                info.maxLength++;
                return next.study(info);
            }
    static final class NotSingle extends Node {
            Node dup(boolean not) {
                if (not)
                    return new Single(ch);
                else
                    return new NotSingle(ch);
            }
            boolean study(TreeInfo info) {
                info.minLength++;
                info.maxLength++;
                return next.study(info);
            }
        }
    static final class SingleA extends Node {
            Node dup(boolean not) {
                if (not)
                    return new NotSingleA(ch);
                else
                    return new SingleA(ch);
            }
            boolean study(TreeInfo info) {
                info.minLength++;
                info.maxLength++;
                return next.study(info);
            }
        }
    
        static final class NotSingleA extends Node {
            int ch;
            NotSingleA(int n) {
                ch = ASCII.toLower(n);
            }
            Node dup(boolean not) {
                if (not)
                    return new SingleA(ch);
                else
                    return new NotSingleA(ch);
            }
    
            boolean study(TreeInfo info) {
                info.minLength++;
                info.maxLength++;
                return next.study(info);
            }
        }
    
        static final class Ctype extends Node 
            Node dup(boolean not) {
                if (not) {
                    return new NotCtype(ctype);
                } else {
                    return new Ctype(ctype);
                }
            }
            boolean study(TreeInfo info) {
                info.minLength++;
                info.maxLength++;
                return next.study(info);
            }
        }
    
    далее идут 
    static final class SingleU extends Node {
    static final class NotCtype extends Node {
    static final class NotSingleU extends Node {
    c очевидно какими методами внутри

    суровое ООП, главное что это не школьная поделка, а серъезнейший продукт
    продолжение #3976 #3975 #3940

    3.14159265, 16 Августа 2010

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

    +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
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    //Файл teamWorkFile.h:
    static int teamWork(int e)
    {
    #if N==0
    	return 0;
    #elif N==1
    	return Work52(e+1);
    #elif
    	return WorkN(N);
    #endif
    };
    
    //Файл teamWork.h:
    //...
    #define MaxProc 6
    typedef int (*ProcTypeTeamWork)(int e);
    ProcTypeTeamWork Proc[MaxProc]; 
    #define N 0
    #define teamWork ProcName0
    #include "teamWorkFile.h"
    #undef teamWork
    #undef N
    #define N 1
    #define teamWork ProcName1
    #include "teamWorkFile.h"
    #undef teamWork
    #undef N
    int InitMultiProc()
    {
    	Proc[0]=ProcName0;
    	Proc[1]=ProcName1;
    	Proc[2]=ProcName1;
    	Proc[4]=ProcName0;
    	Proc[5]=ProcName1;
    	return 0;
    };
    
    //Файл teamWorkLib.cpp:
    #include "teamWork.h"
    //...
    InitMultiProc();
    ProcTypeTeamWork SuperProc=Proc[5];
    //Дальше в этом файле вызовы в стиле Proc[i](e);, SuperProc(255); и тд...

    Удивительный код состоит из 3х файлов(teamWorkLib.cpp, teamWork.h, teamWorkFile.h), но он того стоит.

    Говногость, 23 Июня 2010

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

    +113

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    //java.io.Bits
        static void putDouble(byte[] b, int off, double val) {
    	long j = Double.doubleToLongBits(val);
    	b[off + 7] = (byte) (j >>> 0);
    	b[off + 6] = (byte) (j >>> 8);
    	b[off + 5] = (byte) (j >>> 16);
    	b[off + 4] = (byte) (j >>> 24);
    	b[off + 3] = (byte) (j >>> 32);
    	b[off + 2] = (byte) (j >>> 40);
    	b[off + 1] = (byte) (j >>> 48);
    	b[off + 0] = (byte) (j >>> 56);
        }

    остальное содержимое класса в таком же стиле

    3.14159265, 21 Июня 2010

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