Я просто справлялся об общепринятой практике синтаксиса проверки аргумента. Я работаю с PHP с в настоящее время, но что-либо, это рассмотрело решение агностика платформы/языка, было бы большим.
С в настоящее время, я знаю о двух довольно общих синтаксисах. Например (мое предпочтение):
function foo($a, $b, $c){
if(!$a){ throw new Exception(); }
if($b < 0){ throw new Exception(); }
if(!check($c)){ throw new Exception(); }
//do stuff with $a, $b, and $c
}
И альтернативно:
function foo($a, $b, $c){
if($a){
if($b >= 0){
if(check($c)){
//do stuff with $a, $b, and $c
}else{ throw new Exception(); }
}else{ throw new Exception(); }
}else{ throw new Exception(); }
}
В любом случае, если кто-либо знает о документации, которая иллюстрирует любой вид стандартов или общие методы относительно этого, я был бы очень признателен за ссылку.
Конечно, персональные предпочтения и мнения больше затем приветствуются, но обоснование для Вашего выбора было бы активом.
Я предпочитаю приведенный вами первый пример по ряду причин:
if
. Я предпочитаю иметь все предварительные условия непосредственно в начале метода Дизайн по контракту - это общий подход к обеспечению выполнения определенных условий (обычно посредством утверждений), таких как:
Assert.IsNotNull($a, '$a must not be null');
Если утверждение не выполняется, создается исключение. выдается с указанным сообщением.
Используя тот же подход, вы можете сделать определенные утверждения в конце метода (пост-условия), чтобы гарантировать, что метод выполняется должным образом.
В качестве альтернативы сгруппируйте набор тестов if вместе в один «оператор if»:
function foo($a, $b, $c) {
if ((!$a) ||
($b < 0) ||
(!check($c))) {
throw new Exception();
}
//do stuff with $a, $b, and $c
}