EDYCJA: Dostaję ostatnio dużo głosów negatywnych na ten temat ... więc pomyślałem, że dodam notatkę, że ta odpowiedź została napisana przed poddaniem pytania jej ostatniej edycji, w której zwracanie wartości null było podświetlone jako opcja .. . które wydaje się bardzo do przyjęcia. Część mojej odpowiedzi dotyczyła takich obaw, jak Edwardo, w komentarzach, które zdawały się opowiadać za zwrotem 0. To był przypadek, któremu się szydziłem.
ODPOWIEDŹ: Wydaje mi się, że kryje się w tym problem podstawowy, polegający na tym, że podział przez 0 jest niezgodny z prawem. Wskazuje to, że coś jest z gruntu nie tak. Jeśli dzielisz przez zero, próbujesz zrobić coś, co nie ma sensu matematycznego, więc żadna odpowiedź liczbowa, którą możesz uzyskać, nie będzie poprawna. (Zastosowanie null w tym przypadku jest uzasadnione, ponieważ nie jest to wartość, która zostanie wykorzystana w późniejszych obliczeniach matematycznych).
Więc Edwardo pyta w komentarzach „a jeśli użytkownik wpisze 0?”, I opowiada się za tym, aby w zamian otrzymać 0. Jeśli użytkownik doda zero do kwoty, a chcesz, aby 0 zwróciło, gdy to zrobi, powinieneś wstawić kod na poziomie reguł biznesowych, aby złapać tę wartość i zwrócić 0 ... nie ma specjalnego przypadku, w którym dzielenie przez 0 = 0.
To subtelna różnica, ale jest ważna ... ponieważ następnym razem ktoś wywoła twoją funkcję i oczekuje, że zrobi to dobrze, i zrobi coś funky, co nie jest poprawne matematycznie, ale obsługuje konkretny przypadek krawędzi duża szansa, że później kogoś ugryziesz. Tak naprawdę nie dzielisz przez 0 ... po prostu odpowiadasz złą odpowiedzią na złe pytanie.
Wyobraź sobie, że coś koduję i spieprzę to. Powinienem odczytywać wartość skalowania pomiaru promieniowania, ale w dziwnym przypadku krawędzi, którego nie spodziewałem, czytam w 0. Następnie upuszczam moją wartość do twojej funkcji ... zwracasz mi 0! Hurra, brak promieniowania! Tyle, że naprawdę tam jest i po prostu przekazywałem złą wartość ... ale nie mam pojęcia. Chcę, aby podział zgłosił błąd, ponieważ to flaga wskazuje, że coś jest nie tak.