Je ne parle pas anglais Dans ma langue maternelle, je connais certains termes utilisés pour faire référence à la condition vérifiée pour arrêter une récursion et à la condition vérifiée pour des cas extrêmes, improbables ou super simples. En anglais, j'ai rencontré les termes "bord cas", "coin cas", "frontière cas" et "base cas", mais je ne peux pas vraiment comprendre les différences et lesquelles sont utilisées pour désigner quoi; J'aimerais avoir un résumé des différences entre eux.
En particulier, je serais très heureux si quelqu'un pouvait fournir des annotations pour les lignes de l'exemple de code suivant:
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);
}
Je pense que c'est:
- Verification sanitaire
- Contrôle d'entrée
- Cas limite? Cas particulier? Affaire de coin?
- Cas de base? Boundary case?
- Affaire de coin? Cas particulier?
terminology
Chêne
la source
la source
Réponses:
Je ne parle pas anglais non plus. Mais selon Wikipedia:
Ainsi, la nomenclature semble être totalement confuse, même si coin semble signifier quelque chose d'un peu différent (une combinaison de valeurs) que les cas d'arêtes et de limites, qui sont définitivement synonymes. Il est probablement prudent de dire que les cas de bord, de coin et de limite sont la même chose dans le langage courant. Quelqu'un pourrait vouloir dire une chose différente pour chacun d'eux, mais il n'y a pratiquement pas d'accord commun.
Vos 1) et 2) sont ce que vous avez écrit, 3) est un cas limite / frontière, 4) est un cas de base et 5) est un cas spécial.
la source
Quelles que soient les différences entre les mots, ce que vous utiliseriez pour décrire un test dépend de la sémantique (sens) du test, et non du code exact. Dans l'exemple fourni, la signification de chacun des tests n'est pas claire. A part ça, voici comment je les comprends:
sqrt(-1)
et si ellelog(-1)
n’est pas définie.[ $# -gt 0 ]
vérifie que vous avez au moins un paramètre d'entrée, qui peut également être un contrôle de cohérence pour une commande commefind
oumail
.log(1 + the smallest floating point number)
.la source
import cmath; assert(cmath.log(-1) == 3.141592653589793j)