powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / читабельность кода
9 сообщений из 9, страница 1 из 1
читабельность кода
    #38580256
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите какой вариант кода более читабелен
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
for (int i = 0; i < maxFr; i++) // i - номер текущ кадра
            {
                if (radioButtonHex.Checked == true)
                {
                    string s = String.Format("{0:X}", sendSomeFr[i][paramNumber]); // hex
                    this.dataGridViewFramesA[i, 0].Value = "0x" + s;
                }
                else
                    this.dataGridViewFramesA[i, 0].Value = sendSomeFrDouble[i][paramNumber].ToString();

                for (int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
                {
                    if (radioButtonHex.Checked == true)
                    {
                        string s = String.Format("{0:X}", recvSomeFr[i][j]);  // hex
                        this.dataGridViewFramesB[i, j].Value = "0x" + s;
                    }
                    else
                        this.dataGridViewFramesB[i, j].Value = recvSomeFrDouble[i][j].ToString();
                }
            }


или
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
if (radioButtonHex.Checked == true)
            {
                for (int i = 0; i < maxFr; i++) // i - номер текущ кадра
                {
                    string s = String.Format("{0:X}", sendSomeFr[i][paramNumber]); // hex
                    this.dataGridViewFramesA[i, 0].Value = "0x" + s;
                    for (int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
                    {
                        s = String.Format("{0:X}", recvSomeFr[i][j]);  // hex
                        this.dataGridViewFramesB[i, j].Value = "0x" + s;
                    }
                }
            }
            else
            {
                for (int i = 0; i < maxFr; i++) // i - номер текущ кадра
                {
                    this.dataGridViewFramesA[i, 0].Value = sendSomeFrDouble[i][paramNumber].ToString();
                    for (int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
                        this.dataGridViewFramesB[i, j].Value = recvSomeFrDouble[i][j].ToString();
                }
            }
...
Рейтинг: 0 / 0
читабельность кода
    #38580260
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81,

Никакой.

Ну и бессмысленные проверки флага radioButtonHex.Checked в первом варианте тоже доставляют
...
Рейтинг: 0 / 0
читабельность кода
    #38580336
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предложите пожалуйста вариант лучше.
...
Рейтинг: 0 / 0
читабельность кода
    #38580350
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разве что такой вариант приходит в голову
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
if (radioButtonHex.Checked == true)
            {
                for (int i = 0; i < maxFr; i++) // i - номер текущ кадра
                {
                    this.dataGridViewFramesA[i, 0].Value = "0x" + sendSomeFr[i][paramNumber].ToString("X");
                    for (int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
                        this.dataGridViewFramesB[i, j].Value = "0x" + recvSomeFr[i][j].ToString("X");
                }
            }
            else
            {
                for (int i = 0; i < maxFr; i++) // i - номер текущ кадра
                {
                    this.dataGridViewFramesA[i, 0].Value = sendSomeFrDouble[i][paramNumber].ToString();
                    for (int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
                        this.dataGridViewFramesB[i, j].Value = recvSomeFrDouble[i][j].ToString();
                }
            }


Кстати, непонятно почему после первой строки кода 3 табуляции?
...
Рейтинг: 0 / 0
читабельность кода
    #38580358
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81Разве что такой вариант приходит в голову
Код: c#
1.
2.
if (radioButtonHex.Checked)
...
...
Рейтинг: 0 / 0
читабельность кода
    #38580360
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81Предложите пожалуйста вариант лучше.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void Method(<какойто тип> someFr, someFrDouble, dataGridViewFrames)
{
   if (radioButtonHex.Checked)
                    {
                        string s = String.Format("{0:X}", someFr[i][j]);  // hex
                        this.dataGridViewFrames[i, j].Value = "0x" + s;
                    }
                    else
                        this.dataGridViewFrames[i, j].Value = someFrDouble[i][j].ToString();
}

.................
//вся х..ня с использованием Method()
...
Рейтинг: 0 / 0
читабельность кода
    #38580539
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webber81, 1) если программист пишет комментарий по поводу имени переменной, значит имя выбрано неудачно. Так что начни с переименования переменных i и j, в curFrame и curParam соответственно.

2) Вместо
Код: c#
1.
2.
string s = String.Format("{0:X}", sendSomeFr[i][paramNumber]); // hex
this.dataGridViewFramesA[i, 0].Value = "0x" + s;

или
Код: c#
1.
this.dataGridViewFramesA[i, 0].Value = "0x" + sendSomeFr[i][paramNumber].ToString("X");


лучше написать
Код: c#
1.
this.dataGridViewFramesA[i, 0].Value = String.Format("0x{0:X}", sendSomeFr[i][paramNumber]);



3) В целом два примера мало отличаются по читабельности. Второй вариант станет более предпочтительным по мере добавления кода. Кроме того он лучше с точки зрения производительности т.к. мы выносим проверку неизменяемого значения за пределы цикла. Возможно что JIT компилятор умеет делать такие оптимизации, но это еще надо проверить.

webber81Кстати, непонятно почему после епервой строки кода 3 табуляции?
А что мешает сделать одинаковые отступы?
...
Рейтинг: 0 / 0
читабельность кода
    #38580842
webber81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что мешает сделать одинаковые отступы?

В Visual Studio - одинаковые.
А здесь почему то нет.
Может я что то не так делаю?
...
Рейтинг: 0 / 0
читабельность кода
    #38580883
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
for(int i = 0; i < maxFr; i++) // i - номер текущ кадра
{
    var checked = radioButtonHex.Checked;
    var formatString = checked ? "0x{0:X}" : "{0}"

    /* Тут может потребоваться привести к object */
    var iParam = checked ? /* (object) */ sendSomeFr[i][paramNumber] : sendSomeFrDouble[i][paramNumber];
    dataGridViewFramesA[i, 0].Value = string.Format(formatString, iParam);

    for(int j = 0; j < recvSomeFr[i].Length; j++) // j - номер текущ парам
    {
        var iParam = checked ? /* (object) */ sendSomeFr[i][j] : sendSomeFrDouble[i][j];
        dataGridViewFramesB[i, j].Value = string.Format(formatString, jParam);
    }
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / читабельность кода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]