Существует ли способ возвратиться рано из функции в классическом 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. Существует ли способ повредить выполнение кода, где тот оператор возврата находится?
Да, с использованием функции выхода
.
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
В классическом 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
Как уже указывалось, вы можете использовать функцию выхода
, но вам следует проявлять осторожность. В приведенном вами простом примере нет никаких преимуществ, которые в любом случае не выполнял бы другой код
.
Размещение точек выхода во всем фрагменте кода может затруднить отслеживание и отладку. Более серьезно, это может привести к тому, что последующие изменения кода станут сложнее, потребуют более обширных изменений и, следовательно, увеличат риск. Следовательно, такой узор следует рассматривать как «неприятный запах».
Типичный сценарий, в котором его разумно приемлемо, - это когда код может сделать некоторые утверждения о своих входных параметрах, прежде чем продолжить работу с основной частью кода. Помимо этого, вы должны уметь выразить действительно, действительно серьезную причину для этого.
Вы можете сказать: «Если я сделаю это таким образом, у меня будет больше If
структур и чрезмерно увеличится идентификация в коде». Если это так, то в функции все равно слишком много кода, и ее следует реорганизовать в более мелкие функции.