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

    Всего: 14

  2. C# / Говнокод #26480

    +1

    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
    public class WindowEx : Window //...
    {
            //hwnd окна
            public IntPtr Handle { get; set; }
    
            private const int GWL_EXSTYLE = (-20);
            private const uint WS_EX_TOPMOST = 0x00000008;
    
            public void SetTopmost()
            {
                SetTopmost(Handle);
            }
    
            public static void SetTopmost(IntPtr hWnd)
            {
                SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST));
            }
    
            public void UnSetTopmost()
            {
                UnSetTopmost(Handle);
            }
    
            public static void UnSetTopmost(IntPtr hWnd)
            {
                SetWindowLongPtr(hWnd, GWL_EXSTYLE, (IntPtr)((ulong)GetWindowLongPtr(hWnd, GWL_EXSTYLE) & ~WS_EX_TOPMOST));
            }
    
            private bool _topmost;
            public new bool Topmost
            {
                set
                {
                    if (value)
                    {
                        SetTopmost();
                    }
                    else
                    {
                        UnSetTopmost();
                    }
                    _topmost = value;
                }
                get { return _topmost; }
            }
    }

    Тру окно. С тру топмостом. Бесполезно чуть менее, чем полностью:
    1) Новый топмост не нужен. Оригинальное свойство через SetWindowPos сделает тоже самое (SetWindowPos может менять дополнительный стиль WS_EX_TOPMOST)
    2) Handle (hwnd окна) c публичным set. Круто, чё. Следовало бы сделать public IntPtr Handle { get; private set; }

    Так я писал код где-то лет 6 назад.

    Janycz, 08 Марта 2020

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

    +1

    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
    private void MainDataGridCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
                if (e.Column == MainDataGrid.Columns[1])
                    return;
    
                if (CheckComplianceWithIndentation)
                    if ((NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) != NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation)) && !Rows[e.Row.GetIndex()].Tags.Contains("I"))
                        Rows[e.Row.GetIndex()].Tags += "I";
                    else if (NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].OriginalText) == NumberOfLeadingSpaces(Rows[e.Row.GetIndex()].Translation))
                        Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("I", "");
    
                if ((Rows[e.Row.GetIndex()].Translation.Trim() == "") && !Rows[e.Row.GetIndex()].Tags.Contains("N"))
                    Rows[e.Row.GetIndex()].Tags += "N";
                else if (Rows[e.Row.GetIndex()].Translation.Trim() != "")
                    Rows[e.Row.GetIndex()].Tags = Rows[e.Row.GetIndex()].Tags.Replace("N", "");
    
                //...
    }
    
    public void TagsInit()
    {
                if (CheckComplianceWithIndentation)
                    foreach (var hRow in Rows.Where(hRow => NumberOfLeadingSpaces(hRow.OriginalText) != NumberOfLeadingSpaces(hRow.Translation)))
                    {
                        hRow.Tags += "I";
                    }
    
                foreach (var row in Rows.Where(hRow => hRow.Translation == ""))
                {
                    row.Tags += "N";
                }
    }

    Дано: C#, WPF, DataGrid, таблица.
    Надо сделать: таблица имеет поля, в том числе и поле Tags, которое определяется полями Translation и OriginalText, а также настройками пользователя (CheckComplianceWithIndentation), нет бы его вынести в класс строки как геттер:
    public string Tags => f(Translation, Original);

    вместо:
    private string _tags;
    public string Tags
    {
    get => _tags;
    set
    {
    _tags = value;
    RaisePropertyChanged("Tags");
    }
    }

    Так нет же, будем отлавливать изменения ячеек таблицы (MainDataGridCellEditEnding) и пересчитывать Tags. MainDataGrid.Columns[1] - это колонка с ними, прибито гвоздями в xaml: CanUserReorderColumns="False"

    Эх, а еще и Trim вместо String.IsNullOrWhiteSpace.

    А еще немного венгерской говнонотации (hRow).

    Так я писал где-то лет 7 назад. Да, тогда стрелок не было, но они приведены в описании тупо для сокращения строк кода.

    Janycz, 08 Марта 2020

    Комментарии (1)
  4. Pascal / Говнокод #19244

    −41

    1. 1
    if (abs(i-i1)<1) or (abs(j-j1)<0) then continue;

    Модуль меньше нуля.

    Janycz, 25 Декабря 2015

    Комментарии (33)
  5. Pascal / Говнокод #19106

    −43

    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
    88. 88
    89. 89
    TBattleBot = class(TUnit)
       fLetaet,fPlyvet:boolean; fBMSpeed:integer;//skorost' kadrov
       fCBMm:integer;//количество картинок MOVE
       fCBMl:integer;//count lestnica
       fCBMu:integer;//count up lestnica
       fCBMa:integer;//count attack              //
       fCBMd:integer;//count damage
       fCBMk:integer;//count kill
       fMxSp,fMySp,fLxSp,fLySp,fUxSp,fUySp:integer;//skorosti
       fBShow:boolean;
       fxSnarad,fySnarad:integer;//x y vypuskaemogo snarada otnositelno 0:0-fxbm:fybm
       fSxSpeed,fSySpeed:integer;//skorost' snarada
       fSPZh:integer;//PZh snarada
       fSlvl:integer;//lvl snarada    :;
       fSBMSpeed:integer;
       fSxbm,fSybm,fSxr,fSyr,fSxb,fSyb,fSWidthbm,fSHeightbm,fSWidthr,fSHeightr:integer;//har snarada
       fAlgoritm:array [1..10] of TAlgoritm;
       fST:integer;//summa vremeni algoritmov
       fCA:integer;//kolvo povtorov algoritmov
       fTAlgoritm:integer;//Tekushchii algoritm
       fDamage:integer; //ataka
       fDefence:integer;//zashchyta
       fStructure:integer;
       fTStructure:integer;//HP
       Constructor Create(xbm,ybm,xr,yr,Widthr,Heightr,xb,yb,
       CBMm,CBMl,CBMu,CBMa,CBMd,CBMk,BMSpeed,
       xSnarad,ySnarad,Sxr,Syr,Sxb,Syb,SxSpeed,SySpeed,SPZh,Slvl,SBMSpeed,
       SWidthbm,SHeightbm,SWidthr,SHeightr,
       MxSp,MySp,LxSp,LySp,UxSp,UySp,
       c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,Damage,Defence,Structure,TStructure:integer;
       StBM:string;Stan,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10:char;
       Levo,Letaet,Plyvet:boolean);
       Procedure Attack(Alvl:integer);
      end;
    //....
    Constructor TBattleBot.Create(xbm,ybm,xr,yr,Widthr,Heightr,xb,yb,
    CBMm,CBMl,CBMu,CBMa,CBMd,CBMk,BMSpeed,
    xSnarad,ySnarad,Sxr,Syr,Sxb,Syb,SxSpeed,SySpeed,SPZh,Slvl,SBMSpeed,
    SWidthbm,SHeightbm,SWidthr,SHeightr,
    MxSp,MySp,LxSp,LySp,UxSp,UySp,
    c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,Damage,Defence,Structure,TStructure:integer;
    StBM:string;Stan,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10:char;
    Levo,Letaet,Plyvet:boolean);
    begin
    inherited Create(xbm,ybm,xr,yr,Widthr,Heightr,xb,yb,StBM,Stan,Levo);
    fBMSpeed:=BMSpeed;
    fStan:=Stan;
    fCBMm:=CBMm;
    fCBMl:=CBMl;
    fCBMa:=CBMa;
    fCBMd:=CBMd;
    fCBMk:=CBMk;
    fLevo:=Levo;
    fLetaet:=Letaet;
    fPlyvet:=Plyvet;
    fxSnarad:=xSnarad;
    fySnarad:=ySnarad;
    fSxr:=Sxr;
    fSyr:=Syr;
    fSxb:=Sxb;
    fSyb:=Syb;
    fSxSpeed:=SxSpeed;
    fSySpeed:=SySpeed;
    fSPZh:=SPZh;
    fSlvl:=Slvl;
    fSBMSpeed:=SBMSpeed;
    fSWidthbm:=SWidthbm;
    fSHeightbm:=SHeightbm;
    fSWidthr:=SWidthr;
    fSHeightr:=SHeightr;
    fMxSp:=MxSp;
    fMySp:=MySp;
    fLxSp:=LxSp;
    fLySp:=LySp;
    fUxSp:=UxSp;
    fUySp:=UySp;
    fAlgoritm[1].Chastota:=c1;
    fAlgoritm[2].Chastota:=c2;
    //...
    fAlgoritm[1].NStan:=s1;
    fAlgoritm[2].NStan:=s2;
    //...
    fCA:=0;
    fTAlgoritm:=1;
    fDamage:=Damage;
    fDefence:=Defence;
    fStructure:=Structure;
    fTStructure:=TStructure;
    end;

    Так говнокодил мой друг реалтаймовую игрушку.
    Описание юнита.

    Janycz, 29 Ноября 2015

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

    +141

    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
    private void FontsComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ExampleTextBox.FontFamily = ((FontFamilyItem)FontsComboBox.SelectedItem).FontFamily;
    
        //combobox values disappears after selected
        //TODO: OPTIMIZE
        FontsComboBox.SelectionChanged -= FontsComboBoxSelectionChanged;
        int iSelIndex = FontsComboBox.SelectedIndex;
        FontsComboBox.Items.Clear();
        foreach (var item in _aFonts)
            FontsComboBox.Items.Add(item);
        FontsComboBox.SelectedIndex = iSelIndex;
        FontsComboBox.SelectionChanged += FontsComboBoxSelectionChanged;
    }

    Значения из списка ComboBox'а исчезают после выбора их.
    Решил проблему костылем говнокодом. Правда теперь стало чуть-чуть тормозить. Но на это можно забить.

    Janycz, 18 Июля 2015

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    RECT rect;
    GetWindowRect(hWnd, &rect);
    int iWidth = rect.right - rect.left;
    int iHeight = rect.bottom - rect.top;
    Line(hDC, 0, 0, 5000, 0);
    Line(hDC, 0, 0, 0, 5000);
    Line(hDC, 0, iHeight - 1, iWidth, iHeight - 1);
    Line(hDC, iWidth - 1, 0, iWidth - 1, iHeight - 1);

    Рисование линий на границе окна.

    Janycz, 27 Июня 2015

    Комментарии (5)
  8. Lua / Говнокод #18346

    −85

    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
    local sol_lines = {}
    local i = 1; local j = 0;
    	
    while (i <= solution:len()) do
    	local begin_pos = i
    	while(i <= solution:len() and solution:sub(i, i) ~= '\n') do
    		i = i + 1
    	end
    
    	if i > solution:len() then
    		i = solution:len()
    	end
    
    	local cur_line = solution:sub(begin_pos, i)
    	sol_lines[j] = trim(cur_line)
    	i = i + 1
    	j = j + 1
    end

    Lua
    Как я разбивал строку на отдельные линии. Вместо того, чтобы использовать string.find(s, "\n", i + 1). Так я писал код 0.027397 года назад назад.

    Janycz, 15 Июня 2015

    Комментарии (28)
  9. Pascal / Говнокод #18296

    +144

    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
    Unit Web;
    
    interface
    
    uses System, System.Drawing, System.Windows.Forms;
    
    var f: Form;
    
    type
      WebBro = class(Form)
        procedure button1_Click(sender: Object; e: EventArgs);
      {$region FormDesigner}
      private
        {$resource Web.WebBro.resources}
        button1: Button;
        webBrowser1: WebBrowser;
        {$include Web.WebBro.inc}
      {$endregion FormDesigner}
      public
        constructor;
        begin
          InitializeComponent;
        end;
      end;
    
    implementation
    
    Procedure FindForm();
    begin
      var i:=0;
      while i < Application.OpenForms.Count do
        begin
          f := Application.OpenForms.Item[i];
          if f.Name = 'TwiGen_News' then exit
            else inc(i);
        end;
    end;
    
    procedure WebBro.button1_Click(sender: Object; e: EventArgs);
    begin
      WebBro.ActiveForm.Hide();
      FindForm;
      f.Show();
    end;
    
    end.
    
    //----------------
    
    Unit Unit1;
    
    interface
    
    uses System, System.Drawing, System.Windows.Forms, Web;
    
    var NewsForm: WebBro;
    
    type
      TwiGen_News = class(Form)
        procedure News_Click(sender: Object; e: EventArgs);
      {$region FormDesigner}
      private
        {$resource Unit1.TwiGen_News.resources}
        LogIn: Button;
        News: Button;
        Reg: Button;
        {$include Unit1.TwiGen_News.inc}
      {$endregion FormDesigner}
      public
        constructor;
        begin
          InitializeComponent;
        end;
      end;
    
    implementation
    
    procedure TwiGen_News.News_Click(sender: Object; e: EventArgs);
    begin
      TwiGen_News.ActiveForm.Hide();
      NewsForm := new WebBro;
      NewsForm.Show;
    end;
    
    end.

    Друг писал, но мне он говорил, что переписывал говнокод.
    Pascal ABC.NET.

    Janycz, 08 Июня 2015

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

    +56

    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
    std::map<int, int> aSummator; //Массив частичных сумм
    std::vector<int> v; //Исходный массив
    
    void InitSummator()
    {
        aSummator[0] = v[0];
        aSummator[-1] = 0;
    
        for(int i = 1; i < int(v.size()); i++)
        {
            aSummator[i] = aSummator[i - 1] + v[i];
        }
    }
    
    int GetSum(int l, int r)
    {
        return aSummator[r] - aSummator[l - 1]; 
    }

    Как я писал сумматор 0.1 года назад. Вместо того, чтобы написать один if, я использовал std::map, что увеличило ассимптотику алгоритма на запрос с O(1) до O(log(n)). Но задачу при тех ограничениях (в массиве до 100000 элементов, запросов не более 100000) алгоритм решил. Преподу, естественно, показывать забоялся.

    Janycz, 03 Апреля 2015

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

    +96

    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
    protected override void OnSourceInitialized(EventArgs e)
    {
        base.OnSourceInitialized(e);
        var hWndSource = (HwndSource)PresentationSource.FromVisual(this);
        Handle = hWndSource.Handle;
        hWndSource.AddHook(WndProc);
    }
    
    private const int WM_ACTIVATE = 0x0006;
    private const ushort WA_INACTIVE = 0;
    
    static ushort LOWORD(IntPtr I)
    {
        unchecked
        {
            return (ushort)(((uint)I) & 0xFFFF);
        }
    }
    
    protected IntPtr WndProc(IntPtr hWnd, int iMsg, IntPtr wParam, IntPtr lParam, ref bool bHandled)
    {
        switch (iMsg)
        {
            case WM_ACTIVATE:
                Opacity = LOWORD(wParam) == WA_INACTIVE ? 0.4 : 1.0;
                bHandled = true;
                return (IntPtr)1;
        }
    
        return IntPtr.Zero;
    }

    Из моего проекта. Так я писал код 0.8 год назад.
    Вместо того, чтобы использовать OnActivated и OnDeactivated.

    Janycz, 18 Января 2015

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