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

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

    0

    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
    <snippet>
    	<content><![CDATA[
    /**
     * стандартный класс модуля
     */
    Class adeveloper_main extends CModule
    {
    	const MODULE_ID = 'adeveloper.main';
    	var \$MODULE_ID = 'adeveloper.main'; 
    	var \$MODULE_VERSION;
    	var \$MODULE_VERSION_DATE;
    	var \$MODULE_NAME;
    	var \$MODULE_DESCRIPTION;
    	var \$MODULE_CSS;
    	var \$strError = '';
    	function __construct()
    	{
    		\$arModuleVersion = array();
    		include(dirname(__FILE__)."/version.php");
    		\$this->MODULE_VERSION = \$arModuleVersion["VERSION"];
    		\$this->MODULE_VERSION_DATE = \$arModuleVersion["VERSION_DATE"];
    		\$this->MODULE_NAME = "Module Name";
    		\$this->MODULE_DESCRIPTION = "Module desc";
    		\$this->PARTNER_NAME = "Adeveloper";
    		\$this->PARTNER_URI = "http://adeveloper.ru";
    	}
    	function InstallDB(\$arParams = array())
    	{
    		//RegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
    		return true;
    	}
    	function UnInstallDB(\$arParams = array())
    	{
    		//UnRegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
    		return true;
    	}
    	function InstallEvents()
    	{
    		return true;
    	}
    	function UnInstallEvents()
    	{
    		return true;
    	}
    	function InstallFiles(\$arParams = array())
    	{
    		return true;
    	}
    	function UnInstallFiles()
    	{
    		return true;
    	}
    	function DoInstall()
    	{
    //		global \$APPLICATION;
    	
    		RegisterModule(self::MODULE_ID);
    	}
    	/**
    	 *  @todo добавить блок удаления инфоблока, пока не делаю, чтобы лишнего не удалить
    	 */
    	function DoUninstall()
    	{
    //		global \$APPLICATION;
    		UnRegisterModule(self::MODULE_ID);
    	}
    };
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>bx-module-class</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.php</scope>
    </snippet>

    Шел 2016 год, а var и globals все никак не могу покинуть адептов битрикса.

    https://github.com/adevelopers/bitrix/blob/master/BitrixSnippets/modules/bx-module-class.sublime-snippet

    Keeper, 03 Мая 2016

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

    +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
    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
    var ls = new List<List<Tuple<Terminal, int>>>();
                var cl = new List<Tuple<Terminal, int>>();
                for (int i = 0; i < Template.Terminals.Count; i++)
                {
                    var term = Template.Terminals[i];
                    var s = term.Text;
                    if (s.Count(c => c == '\n' || c == '\r') > 0)
                    {
                        var arr = s.Split('\n', '\r');
                        for (var j = 0; j < arr.Length - 1; j++)
                        {
                            if (arr[j].Length == 0) arr[j] = " ";
                            cl.Add(Tuple.Create(new Terminal(arr[j], term), i));
                            ls.Add(cl);
                            cl = new List<Tuple<Terminal, int>>();
                        }
                        s = arr[arr.Length - 1];
                    }
                    cl.Add(Tuple.Create(new Terminal(s, term), i));
                }
                ls.Add(cl);
    
                var h = 0d;
                var renderLine = new List<Tuple<double, int, Terminal>>();
                var flag = false;
                foreach (var l in ls)
                {
                    renderLine = new List<Tuple<double, int, Terminal>>();
                    var w = 0d;
                    var lineH = 0d;
                    foreach (var term in l)
                    {
                        var ft = new FormattedText(term.Item1.Text, CultureInfo.CurrentCulture,
                            FlowDirection.LeftToRight, new Typeface("Verdana"), 10, Brushes.Black);
                        ft.Set(term.Item1);
                        lineH = Math.Max(lineH, ft.Height);
                        w += ft.WidthIncludingTrailingWhitespace;
                        renderLine.Add(Tuple.Create(w, term.Item2, term.Item1));
                    }
                    h += lineH;
                    if (p.Y < h) { flag = true; break; }
                }
                pp = p;
                InvalidateVisual();
                if (!flag)
                    return;
                flag = false;
                Tuple<double, int, Terminal> ct = null;
                foreach (var d in renderLine)
                    if (d.Item1 > p.X)
                    {
                        flag = true;
                        ct = d;
                        Debug.WriteLine(d.Item2);
                        _sTermEnd = _sTermStart = d.Item2;
                        break;
                    }
                if (!flag)
                    return;
                var ft1 = new FormattedText(ct.Item3.Text, CultureInfo.CurrentCulture,
                     FlowDirection.LeftToRight, new Typeface("Verdana"), 10, Brushes.Black);
                ft1.Set(ct.Item3);
                var sw = ct.Item1 - ft1.WidthIncludingTrailingWhitespace;
                for (int i = 0; i < ct.Item3.Text.Length; i++)
                {
                    var ch = ct.Item3.Text[i];
                    var ft2 = new FormattedText(ch.ToString(), CultureInfo.CurrentCulture,
                        FlowDirection.LeftToRight, new Typeface("Verdana"), 10, Brushes.Black);
                    ft2.Set(ct.Item3);
                    sw += ft2.WidthIncludingTrailingWhitespace;
                    if (sw > p.X)
                    {
                        Debug.WriteLine(i);
                        _sOffEnd = _sOffStart = i;
                        break;
                    }
                }

    qwe345asd, 13 Апреля 2016

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

    +3

    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
    constexpr Vector(Vector&& vector) noexcept :
                x(vector.x), y(vector.y), z(vector.z)
            {
                vector.x = vector.y = vector.z = T();
            }
    
            constexpr Vector& operator=(Vector&& vector) noexcept
            {
                if (this == &vector)
                    return *this;
    
                x = vector.x;
                y = vector.y;
                z = vector.z;
    
                vector.x = vector.y = vector.z = T();
    
                return *this;
            }

    jangolare, 13 Апреля 2016

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

    +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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    constexpr Fraction operator+(const Fraction& fraction) const noexcept
        {
            const Fraction max_fraction_by_denominator{denominator > fraction.denominator ? *this : fraction};
            const Fraction min_fraction_by_denominator{denominator < fraction.denominator ? *this : fraction};
            const bool is_sim_denominator = max_fraction_by_denominator.denominator %
                                            min_fraction_by_denominator.denominator == 0;
            int sim_denominator = is_sim_denominator ?
                max_fraction_by_denominator.denominator : (max_fraction_by_denominator.denominator *
                min_fraction_by_denominator.denominator);
            const int nominator1 = is_sim_denominator ? (min_fraction_by_denominator.nominator *
                max_fraction_by_denominator.denominator / min_fraction_by_denominator.denominator) :
                min_fraction_by_denominator.nominator * max_fraction_by_denominator.denominator;
            const int nominator2 = is_sim_denominator ? max_fraction_by_denominator.nominator :
                max_fraction_by_denominator.nominator * min_fraction_by_denominator.denominator;
            int nominators_sum = nominator1 + nominator2;
            int while_parts_sum = while_part + fraction.while_part;
    
            while (nominators_sum >= sim_denominator)
            {
                nominators_sum -= sim_denominator;
                ++while_parts_sum;
            }
    
            if (!nominators_sum)
                sim_denominator = 0;
    
            return {while_parts_sum, nominators_sum, sim_denominator};
        }

    jangolare, 06 Апреля 2016

    Комментарии (6)
  6. PHP / Говнокод #19676

    0

    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
    public function getWinnerEmail($id)
    {
            if (!is_numeric($id)) {
                throw new BadRequestHttpException('Ошибка:' . __FUNCTION__ . ' ' . __LINE___);
            }
    
            //$project = Projects::findOne(['id' => $id]);
            $project = (new \yii\db\Query())
                ->select(['id', 'win_user_id'])
                ->from(self::tableName())
                ->where(['id' => $id])
                ->one();
    //        if ($project['win_user_id'] == null) {
    //            return false;
    //        }
    
            $result = User::findOne(['id' => $project['win_user_id']]);
            if ($result != null) {
                return ['id' => $result->id, 'email' => $result->email];
            }
    }

    Метод модели "Project"
    PHP-Framework yii2

    NotFake, 22 Марта 2016

    Комментарии (6)
  7. PHP / Говнокод #19655

    −1

    1. 1
    http://freelansim.ru/tasks/139911?utm_source=toster&utm_medium=referral&utm_campaign=task&utm_content=block_freelansim

    Ну просто поржать.
    А так вообще печально.

    ЗЫ. Не давно на хабре читал про бакдор в wordpress е залившейся через обновление плагина.

    Vasiliy, 18 Марта 2016

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

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    // Статическая типизация для PHP < 7.0
    
    set_error_handler(function(){});
    
    function foo(int $bar)
    {
    	var_dump($bar);
    }
    
    foo(1); // Работает и выводит int(1)

    Недавно разгребал легасикод доставшийся по наследству. Увидел статическую типизацию там где ее не должно было быть. Проект крутится на 5.3.

    KiTE, 16 Марта 2016

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

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // найдем максимальное значение идентификатора
    $SQL = "SELECT MAX( id ) AS id FROM  `filter_lists`  WHERE project=1";
    $id = query($SQL);
    //новый идентификатор
    $id = $id['0']['id'] + 1;

    Auto increment PHP way

    хуита, 09 Марта 2016

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

    0

    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
    unsigned int FileScanner::smartBruteForce(QByteArray &haystack, QByteArray &needle)
    {
        unsigned int count = 0;
        unsigned int dataSize = haystack.size();
        unsigned int needleSize = needle.size();
        unsigned int needleSizeCut = needleSize - 1;
        char* dp = haystack.data();
        char* np = needle.data();
        char lastNeedle = *(np + needleSize - 1);
    
        for(unsigned int i = 0; i < dataSize - needleSize + 1; i++)
        {
            if(*(dp + (i + needleSizeCut)) != lastNeedle) //This is smart technology ))))
                continue;
            unsigned int j;
            for(j = 0; j < needleSize; j++)
            {
                if(*(dp + (i + j)) != *(np + j))
                    break;
            }
            if(j == needleSize)
                count++;
        }
        return count;
    }

    laMer007, 20 Февраля 2016

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public void SaveModels(IEnumerable<Activity> models)
     {
                if (models == null && models.Count() == 0) return;
                // step 1/3: remove empty models
                var empty = models.Where(m => !m.ForecastedValue.HasValue && !m.ActualValue.HasValue).ToList();
                if (empty != null)
                {
                    models = models.Except(empty);
                }
               .....
    }

    Зачем такая конструкция, если можно просто
    models = models.Where(m => m.ForecastedValue.HasValue && m.ActualValue.HasValue).ToList()
    К тому же проверка на null бесполезна - ни Where, ни ToList не могут вернуть null. Даже если в коллекции ничего не останется.

    sans, 08 Февраля 2016

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