Как мне отформатировать этот кусок кода? - PullRequest
2 голосов
/ 29 сентября 2010

Вот два способа вызова callscript (в псевдокоде):

с использованием дублированных вызовов

if flag == true
    flag = false
    callscript
    flag = true
else
    callscript
endif

с использованием дополнительной переменной

flag2 = flag
flag = false
callscript
flag = flag2

условия

  • Я должен убедиться, чточто flag равно false при вызове скрипта.
  • Кроме того, значение flag должно быть восстановлено до исходного значения.

Есть лилучший способ сделать это, чем эти два?Если нет, какой из них лучше?

Ответы [ 6 ]

5 голосов
/ 29 сентября 2010

Лучше всего было бы отправить флаг вместе в вызове, чтобы связь между флагом и методом была ясной:

callscript(false)

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

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

4 голосов
/ 29 сентября 2010

Я бы пошел со вторым вариантом с изменением имени переменных, чтобы его было немного легче понять.

saved_flag = flag
flag = false
callscript
flag = saved_flag
1 голос
/ 29 сентября 2010

Мне нравится второй намного лучше, потому что если вы назовете flag2 разумным способом (например,

backupValueOfFlag = flag
flag = false
callscript
flag = backupValueOfFlag

), это будет намного понятнее, что вы делаете и почему вы это делаете.

0 голосов
/ 29 сентября 2010

Что касается меня, лучший выбор - первый. Потому что это более читабельно и понятно, что там происходит.

0 голосов
/ 29 сентября 2010

Я выберу второй.Первый вариант слишком искусен для меня - if не для выполнения программы, а для сохранения значения флага.

0 голосов
/ 29 сентября 2010

Я думаю, именно поэтому были изобретены локальные переменные и параметры подпрограммы.

Вам действительно нужно работать с глобалами?

...