Я не носитель английского языка. На моем родном языке мне известны некоторые термины, используемые для обозначения проверенного условия, чтобы остановить рекурсию, и условия, проверенного на крайние, маловероятные или сверхпростые случаи. В английском я встречал термины «крайний случай», «угловой случай», «граничный случай» и «базовый случай», но я не могу понять, какие различия и что используется для обозначения чего; Я хотел бы получить краткое изложение различий между ними.
В частности, я был бы очень рад, если бы кто-то мог предоставить аннотации для строк в следующем примере кода:
int transmogrify(int n) {
1. assert(n <= 1000000);
2. if (n < 0) return -1;
3. if (n == 1000000) return PRE_CALC;
4. if (n == 0) return n+1; // For stopping the recursion
5. if (n == 1251) return 3077;
return transmogrify(n-1);
}
Я думаю, что это:
- Санитарная проверка
- Проверка ввода
- Граничный случай? Крайний случай? Угловой корпус?
- Базовый вариант? Граничный случай?
- Угловой корпус? Крайний случай?
terminology
дуб
источник
источник
Ответы:
Я тоже не носитель английского языка. Но согласно Википедии:
Таким образом, номенклатура, кажется, полностью запутана, хотя угловой случай, кажется, означает что-то немного отличающееся (комбинация значений) от краевых и граничных случаев, которые определенно являются синонимами. Вероятно, можно с уверенностью сказать, что крайние, угловые и граничные случаи - это одно и то же в обычной речи. Кто-то может сказать по-разному каждый из них, но вряд ли есть общее согласие.
Ваши 1) и 2) - это то, что вы написали, 3) это случай ребра / границы, 4) базовый случай и 5) особый случай.
источник
Независимо от различий между словами, то, что вы будете использовать для описания теста, зависит от семантики (значения) теста, а не от точного кода - в представленном примере неясно, что означает каждый из тестов. Кроме того, вот как я их понимаю:
sqrt(-1)
иlog(-1)
не определено.[ $# -gt 0 ]
проверяет, что вы получили хотя бы один входной параметр, который также может быть проверкой работоспособности для команды, подобнойfind
илиmail
.log(1 + the smallest floating point number)
.источник
import cmath; assert(cmath.log(-1) == 3.141592653589793j)