Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 1 / 1
Регистрация: 28.12.2023
Сообщений: 134

Можете посмотреть код и сказать на сколько он плох

24.05.2024, 16:57. Показов 558. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто может посмотреть код и раскритиковать его на сколько он плох или хорош
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
public partial class Form1 : Form
{
    private double a, b, c, x1, x2 , D;
 
    private void Form1_Load(object sender, EventArgs e)
    {
 
    }
 
    public Form1()
    {
        InitializeComponent();
    
    }
 
    private void button1_Click(object sender, EventArgs e)
    {           
        bool cheackA = CheckA();
        if (cheackA == true)
       {
           bool inDZero = SearchD();
 
            FormulaX(inDZero);
 
        }
        else
        {
            MessageBox.Show("Измените параметр в поле A - оно не должно быть равно 0");
        }
    }
 
   private void textBox1_TextChanged(object sender, EventArgs e)
   {
 
   }
   private void textBox2_TextChanged(object sender, EventArgs e)
    {
        b = Convert.ToDouble(textBox2.Text);
    }
   private void textBox3_TextChanged(object sender, EventArgs e)
    {
        c = Convert.ToDouble(textBox3.Text);
    }
 
 
    public bool CheckA()
    {
        bool AFits = false;
        if (Convert.ToDouble(textBox1.Text) == 0)
        {
            textBox1.Text = "1";
            Convert.ToDouble(textBox1.Text);
            MessageBox.Show("В параметр a - не льзя ввести 0");
            AFits = false;
        }
        else
        {
            a = Convert.ToDouble(textBox1.Text);
            AFits = true;
        }
        return AFits;
    }
 
    public bool SearchD () 
    {
        bool inDZero;
 
        D = Math.Pow(b, 2) - 4 * a * c;
 
        if (D == 0)
            inDZero = true;
        else
            inDZero = false;
 
        return inDZero;
    }
 
    public void FormulaX(bool inDZero)
    {
        if (inDZero == true)
        {
            x1 = (-b) / 2 * a;
            label4.Text = $"В X - {x1}";
            return;
        }
        else
        {
            x1 = ((-b) + Math.Sqrt(D)) / (2 * a);
            x2 = ((-b) - Math.Sqrt(D)) / (2 * a);
            label4.Text = $"В x1 - {x1} В x2 - {x1}";
            return;
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2024, 16:57
Ответы с готовыми решениями:

Ребят,можете посмотреть,сказать в чём ошибка.Сам проверял ничего не нашёл
Ошибок много а как исправить ума не приложу.

Можете оценить код и сказать что не так?
Написал программу которая берет рандомные слова на разные буквы на английском из блокнота и выводит их в мемо с переводом. например это...

Можете сказать, на каком языке написан данный код
Здравствуйте. Можете сказать, на каком языке написан данный код. На какой программе запустить? Также, это одна программа или же по...

3
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,753
Записей в блоге: 1
24.05.2024, 17:26
Цитата Сообщение от WeiTers Посмотреть сообщение
на сколько он плох
1. установка переменных b и c может вызывать необработанные исключения. Прим. Подобные преобразования лучше делать в методе валидации введённого значения.
2. Именования элементов управления не имеют смыслового назначения. Рекомендация 1, Рекомендация 2.
3. Строка 52 лишняя.
4. Математические методы SearchD и FormulaX должны принимать значения через параметры, кроме того метод FormulaX связан с ЭУ формы. Прим. Нарушение инкапсуляции.
5. В строке 90 допущена ошибка.
3
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
24.05.2024, 19:25
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
public partial class Form1 : Form
{
    private double a, b, c, x1, x2 , D;
 
    private void Form1_Load(object sender, EventArgs e)
    {
 
    }
 
    public Form1()
    {
        InitializeComponent();
    
    }
 
    private void button1_Click(object sender, EventArgs e)
    {           
        bool cheackA = CheckA();
        if (cheackA == true)
       {
           bool inDZero = SearchD();
 
            FormulaX(inDZero);
 
        }
        else
        {
            MessageBox.Show("Измените параметр в поле A - оно не должно быть равно 0");
        }
    }
 
//удалить мусор
   private void textBox1_TextChanged(object sender, EventArgs e)
   {
 
   }
 
// проверка каждый раз, без обработки исключений, когда введут невалидное значение.
// тоже самое для textBox3_TextChanged
   private void textBox2_TextChanged(object sender, EventArgs e)
    {
// textBox2 -- нужно давать осознаный нейминг UI элементам
        b = Convert.ToDouble(textBox2.Text);
    }
   private void textBox3_TextChanged(object sender, EventArgs e)
    {
        c = Convert.ToDouble(textBox3.Text);
    }
 
// методы оперируют UI. Стоит стараться чтобы логика оперировала только входными значениями.
// в идеале стоит вообще выносить в отдельный класс
    public bool CheckA()
    {
        bool AFits = false;
// нет валидации
        if (Convert.ToDouble(textBox1.Text) == 0)
        {
            textBox1.Text = "1";
// дублирование кода. Нужно запомнить конвертацию в переменную
            Convert.ToDouble(textBox1.Text);
// валидация должна быть вне рассчетной формулы
            MessageBox.Show("В параметр a - не льзя ввести 0");
            AFits = false;
        }
        else
        {
// нет валидации
            a = Convert.ToDouble(textBox1.Text);
            AFits = true;
        }
        return AFits;
    }
 
// общепринятый подход bool TryGetD(out double result)
    public bool SearchD () 
    {
        bool inDZero;
 
        D = Math.Pow(b, 2) - 4 * a * c;
 
// можно проще inDZero = D == 0
        if (D == 0)
            inDZero = true;
        else
            inDZero = false;
 
        return inDZero;
    }
 
    public void FormulaX(bool inDZero)
    {
        if (inDZero == true)
        {
            x1 = (-b) / 2 * a;
// опять в методе рассчета присутсвует UI
            label4.Text = $"В X - {x1}";
            return;
        }
        else
        {
            x1 = ((-b) + Math.Sqrt(D)) / (2 * a);
            x2 = ((-b) - Math.Sqrt(D)) / (2 * a);
            label4.Text = $"В x1 - {x1} В x2 - {x1}";
            return;
        }
    }
}
Добавлено через 41 минуту
Псевдокодом как-то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    private void CalculateButtonClick(object sender, EventArgs e)
    {
        if (TryConvert(out var a, out var b, out var c, out var errorMessage))
        {
            (var x1, var x2) = GetResult(a, b, c);
            resultTextBox.Text = x1 is null ? "Нет корней"
                : $"x1 = {x1};{(x2.HasValue ? $" x2 = {x2};" : string.Empty)}";
        }
        else
        {
            MessageBox.Show(errorMessage, "Неверный ввод", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
 
    private bool TryConvert(out double a, out double b, out double c, out string errorMessage)
    {
        var errors = new StringBuilder();
        var result = true;
 
        bool TryConvert(TextBox source, out double value, string name)
        {
            if (double.TryParse(source.Text, out value))
            {
                result = false;
                errors.AppendLine($"{name} имеет неверный формат.");
                return false;
            }
            else
            {
                return true;
            }
        }
 
        var checkA = TryConvert(aTextBox, out a, "a");
        if (checkA && a == 0)
        {
            errors.AppendLine($"В параметр 'a' нельзя ввести 0.");
        }
        _ = TryConvert(bTextBox, out b, "b");
        _ = TryConvert(cTextBox, out c, "c");
        errorMessage = errors.ToString();
        return result;
    }
 
    private static (double?, double?) GetResult(double a, double b, double c)
    {
        var d = Math.Pow(b, 2) - 4 * a * c;
        double? x1 = default;
        double? x2 = default;
 
        if (d == 0)
        {
            x1 = (-b) / 2 * a;
        }
        else if (d > 0)
        {
            var _d = Math.Sqrt(d);
            var a2 = 2 * a;
            x1 = (-b + _d) / a2;
            x2 = (-b - _d) / a2;
        }
 
        return (x1, x2);
    }
1
2 / 1 / 1
Регистрация: 28.12.2023
Сообщений: 134
25.05.2024, 19:17  [ТС]
Uswer, Wolfdp, Спасибо большое вам за анализ и своё высказывание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2024, 19:17
Помогаю со студенческими работами здесь

На сколько хорош или плох данный код?
Добрый вечер! Нужны советы специалистов JS, задача учебная, я как могла и как понимаю написала. Лучших идей в голову не пришло. Но думаю,...

Не работает код. Можете посмотреть?
Сам код program lb7; type d=record n:string; r:string; t:string; end; var x:d;

Есть код, но он работает с ошибками и идёт исключение. Можете посмотреть что не так
#include <iostream> #include <ctime> using namespace std; //Дана целочисленная квадратная матрица размера N×N.Вычислить сумму ...

Можете посмотреть мой код на JQuery. Не могу создать калькулятор, что не так?
Получается когда делаю калькулятор, делаю у себя все нормально отображается, а при переносе на cms летит все, что можно и каждый раз по...

Что можете сказать ?
У одной программулки в разделе импортируемых функций есть такие функции, как: CreateRemoteThread ShellExecute ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru