Возврат рано из функции в классическом ASP

Существует ли способ возвратиться рано из функции в классическом ASP, а не это выполняет полную из функции? Например, позволяет, говорят, что у меня есть функция...

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
  else
    Response.Write("Made it to the end")     
  end if
End Function

Я могу записать это как так...

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
    return
  end if

  Response.Write("Made it to the end")     
End Function

Отметьте оператор возврата, который, конечно, я не могу сделать в классическом ASP. Существует ли способ повредить выполнение кода, где тот оператор возврата находится?

22
задан Rob Segal 4 February 2010 в 15:58
поделиться

3 ответа

Да, с использованием функции выхода .

Function MyFunc(str)
  if str = "ReturnNow!" then
    Response.Write("What up!")       
    Exit Function
  end if

  Response.Write("Made it to the end")     
End Function

Я обычно использую это при возврате значения из функции.

Function usefulFunc(str)
   ''# Validate Input
   If str = "" Then
      usefulFunc = ""
      Exit Function
   End If 

   ''# Real function 
   ''# ...
End Function
36
ответ дан 29 November 2019 в 04:36
поделиться

В классическом ASP необходимо использовать Exit Function:

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
    Exit Function
  end if

  Response.Write("Made it to the end")     
End Function
4
ответ дан 29 November 2019 в 04:36
поделиться

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

Размещение точек выхода во всем фрагменте кода может затруднить отслеживание и отладку. Более серьезно, это может привести к тому, что последующие изменения кода станут сложнее, потребуют более обширных изменений и, следовательно, увеличат риск. Следовательно, такой узор следует рассматривать как «неприятный запах».

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

Вы можете сказать: «Если я сделаю это таким образом, у меня будет больше If структур и чрезмерно увеличится идентификация в коде». Если это так, то в функции все равно слишком много кода, и ее следует реорганизовать в более мелкие функции.

3
ответ дан 29 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: