Какие соглашения об именах следует использовать для второго целого числа во вложенном цикле? - PullRequest
3 голосов
/ 24 февраля 2012

Я довольно новичок в программировании, и мне просто интересно в следующем случае, какое имя будет подходящим для второго целого числа, которое я использую в этом куске кода

for (int i = 0; i < 10; i++)
{
    for (int x = 0; x < 10; x++)
    {
    //stuff
    }
}

Обычно я просто называю это x, но у меня есть ощущение, что это может быстро запутать. Есть ли стандартное название для такого рода вещей?

Ответы [ 4 ]

5 голосов
/ 24 февраля 2012

В зависимости от того, что вы перебираете, имя может быть простым или очевидным в зависимости от контекста:

for(struct mail *mail=inbox->start; mail ; mailid++) {
    for (struct attachment *att=mail->attachment[0]; att; att++) {
        /* work on all attachments on all mails */
    }
}

Для случаев, когда i имеет наибольшее значение для переменной внешнего цикла, в соглашении используются j, k, l и т. Д.

Но когда вы начинаете вложение, ищите более значимые имена. Вы будете благодарить себя через шесть месяцев.

1 голос
/ 24 февраля 2012

Вы можете уменьшить вложенность, вызвав метод.Внутри этого метода вы будете использовать локальную переменную с именем i.

for (int i = 0; i < 10; i++)
{
    methodCall(array[i], array);
}

Я предположил, что вам нужно передать элемент в позиции i во внешнем цикле, а также в массиве.повторяться во внутреннем цикле - это предположение, поскольку на самом деле вам могут потребоваться разные аргументы.

Как всегда, вы должны измерить производительность этого - не должно быть больших накладных расходов при создании методавызов в цикле, но это зависит от языка.

0 голосов
/ 24 февраля 2012

Поскольку вы сказали, что начинаете, я бы сказал, что было бы полезно поэкспериментировать с несколькими стилями.

Для вашего примера я предлагаю просто заменить x на j.
Есть тонны реального кода, который будет использовать соглашение i, j и k для переменных вложенных циклов из одной буквы.

Есть также тонны, которые используют более длинные и более значимые имена.

Но есть многоменее похоже на ваш пример.

Так что вы можете считать это шагом вперед, потому что ваш код больше похож на код реального мира.

0 голосов
/ 24 февраля 2012

Лично я считаю, что вы должны давать переменным значимые имена - здесь i и x ничего не значат и не помогут вам понять ваш код через 3 месяца, после чего он будет казаться вам кодом, написанным

Называйте переменные, чтобы другие люди могли понять, что ваш код пытается выполнить.Вы сэкономите время в долгосрочной перспективе.

...