Eu não sou um falante nativo de inglês. No meu idioma nativo, conheço alguns termos usados para se referir à condição verificada para interromper uma recursão e à condição verificada em casos extremos, improváveis ou super simples. Em inglês, encontrei os termos "caso de borda", "caso de canto", "caso de limite" e "caso de base", mas não consigo entender bem as diferenças e que é usado para se referir a quê; Eu adoraria obter um resumo das diferenças entre eles.
Em particular, eu ficaria muito feliz se alguém pudesse fornecer anotações para as linhas no seguinte exemplo de código:
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);
}
Eu acho que é:
- Verificação de sanidade
- Verificação de entrada
- Caso limite? Caso Edge? Caixa de canto?
- Caso base? Caso limite?
- Caixa de canto? Caso Edge?
terminology
Carvalho
fonte
fonte
Respostas:
Também não sou um falante nativo de inglês. Mas de acordo com a Wikipedia:
Portanto, a nomenclatura parece estar totalmente confusa, embora o caso de canto pareça significar algo um pouco diferente (uma combinação de valores) do que os casos de borda e limite, que são definitivamente sinônimos. Provavelmente, é seguro dizer que casos de borda, canto e limite são a mesma coisa no discurso comum. Alguém poderia dizer algo diferente por cada um deles, mas quase não há acordo comum.
Seus 1) e 2) são o que você escreveu, 3) é um caso de borda / limite, 4) é um caso de base e 5) é um caso especial.
fonte
Independentemente das diferenças entre as palavras, o que você usaria para descrever um teste depende da semântica (significado) do teste, não do código exato - No exemplo, desde que não seja óbvio o significado de cada um dos testes. Além disso, veja como eu os entendo:
sqrt(-1)
e nãolog(-1)
estiver definido.[ $# -gt 0 ]
verifica se você obteve pelo menos um parâmetro de entrada, o que também pode ser uma verificação de integridade de um comando comofind
oumail
.log(1 + the smallest floating point number)
.fonte
import cmath; assert(cmath.log(-1) == 3.141592653589793j)