Nie jestem rodzimym językiem angielskim. W moim ojczystym języku zdaję sobie sprawę z niektórych terminów odnoszących się do warunku sprawdzonego w celu zatrzymania rekurencji oraz warunku sprawdzonego pod kątem ekstremalnych, mało prawdopodobnych lub bardzo prostych przypadków. W języku angielskim spotkałem się z terminami „przypadek na krawędzi”, „przypadek na rogu”, „przypadek na granicy” i „przypadek podstawowy”, ale nie potrafię do końca zrozumieć różnic i które są używane w odniesieniu do czego; Chciałbym uzyskać podsumowanie różnic między nimi.
W szczególności byłbym bardzo szczęśliwy, gdyby ktoś mógł dostarczyć adnotacje do wierszy w poniższym przykładzie kodu:
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);
}
Myślę, że to:
- Kontrola poczytalności
- Kontrola wejścia
- Przypadek graniczny? Edge case? Narożna skrzynka?
- Podstawa? Przypadek graniczny?
- Narożna skrzynka? Edge case?
terminology
Dąb
źródło
źródło
Odpowiedzi:
Nie jestem też native speakerem angielskiego. Ale według Wikipedii:
Tak więc nomenklatura wydaje się całkowicie zagmatwana, chociaż wielkość liter w rogu wydaje się oznaczać coś innego (połączenie wartości) niż przypadki krawędzi i granic, które są zdecydowanie synonimami. Prawdopodobnie bezpiecznie jest powiedzieć, że przypadki krawędzi, narożników i granic są takie same we wspólnej mowie. Ktoś może chcieć powiedzieć coś innego przez każdego z nich, ale prawie nie ma wspólnej zgody.
Twoje 1) i 2) są tym, co napisałeś, 3) jest przypadkiem krawędzi / granicy, 4) jest przypadkiem podstawowym, a 5) jest przypadkiem specjalnym.
źródło
Niezależnie od różnic między słowami to, czego użyjesz do opisania testu, zależy od semantyki (znaczenia) testu, a nie dokładnego kodu - w podanym przykładzie nie jest oczywiste, co oznacza każdy z testów. Poza tym oto jak je rozumiem:
sqrt(-1)
ilog(-1)
jest niezdefiniowana.[ $# -gt 0 ]
sprawdzania Bash , że masz co najmniej jeden parametr wejściowy, który może być również sprawdzeniem poprawności dla polecenia takiego jakfind
lubmail
.log(1 + the smallest floating point number)
.źródło
import cmath; assert(cmath.log(-1) == 3.141592653589793j)