Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / читабельность кода / 9 сообщений из 9, страница 1 из 1
06.03.2014, 14:56
    #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
06.03.2014, 14:58
    #38580260
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
читабельность кода
webber81,

Никакой.

Ну и бессмысленные проверки флага radioButtonHex.Checked в первом варианте тоже доставляют
...
Рейтинг: 0 / 0
06.03.2014, 15:37
    #38580336
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
читабельность кода
Предложите пожалуйста вариант лучше.
...
Рейтинг: 0 / 0
06.03.2014, 15:51
    #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
06.03.2014, 15:57
    #38580358
Кифирчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
читабельность кода
webber81Разве что такой вариант приходит в голову
Код: c#
1.
2.
if (radioButtonHex.Checked)
...
...
Рейтинг: 0 / 0
06.03.2014, 16:03
    #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
06.03.2014, 20:03
    #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
07.03.2014, 09:57
    #38580842
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
читабельность кода
А что мешает сделать одинаковые отступы?

В Visual Studio - одинаковые.
А здесь почему то нет.
Может я что то не так делаю?
...
Рейтинг: 0 / 0
07.03.2014, 10:48
    #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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / читабельность кода / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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