Подтвердить что ты не робот

Возвращение ранней функции из классического 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. Есть ли способ нарушить выполнение кода, где синтаксис этого оператора возврата?

4b9b3361

Ответ 1

Да, используя 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

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

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

   ''# Real function 
   ''# ...
End Function

Ответ 2

С классическим 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

Ответ 3

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

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

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

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