To bardzo zależy. Ale powinieneś zdecydować się coś zrobić i udokumentować .
Jedynym zdecydowanie błędem w kodzie jest zapomnienie o tym, że dane wejściowe użytkownika mogą znajdować się poza oczekiwanym zakresem i napisanie kodu, który przypadkowo zachowuje się trochę. Ponieważ wtedy niektórzy ludzie przyjmą błędne założenia co do zachowania twojego kodu i spowoduje błędy, podczas gdy inni skończą w zależności od zachowania, które przypadkowo ma Twój kod (nawet jeśli to zachowanie jest całkowicie nieprzyjemne), a więc będziesz powodować więcej błędów kiedy później naprawisz problem.
W tym przypadku widzę argumenty tak czy inaczej. Jeśli ktoś podróżuje +10 stopni od 175 stopni, powinien skończyć na -175. Jeśli zawsze normalizujesz dane wprowadzane przez użytkownika i traktujesz 185 jako ekwiwalent -175, kod klienta nie może zrobić źle, gdy dodaje 10 stopni; zawsze ma odpowiedni efekt. Jeśli traktujesz 185 jako błąd, zmuszasz każdy przypadek, w którym kod klienta dodaje względne stopnie, aby wprowadzić logikę normalizacji (lub przynajmniej pamiętasz, aby wywołać procedurę normalizacji), w rzeczywistości spowodujeszbłędy (choć, miejmy nadzieję, łatwe do złapania, które zostaną szybko zgniecione). Ale jeśli liczba długości geograficznej zostanie wprowadzona przez użytkownika, zapisana dosłownie w programie lub obliczona za pomocą jakiejś procedury mającej zawsze być w [-180, 180), wówczas wartość spoza tego zakresu najprawdopodobniej wskaże błąd, więc „pomocne „konwersja może ukryć problemy.
Moim ideałem w tym przypadku byłoby prawdopodobnie zdefiniowanie typu reprezentującego prawidłową domenę. Użyj typu abstrakcyjnego (nie pozwól, aby kod klienta po prostu uzyskiwał dostęp do surowych liczb w nim zawartych) i zapewnij zarówno normalizującą, jak i sprawdzającą fabrykę (aby klient mógł dokonać kompromisu). Ale niezależnie od tego, jaką wartość tego typu stworzysz, 185 powinien być nie do odróżnienia od -175, gdy widzisz go za pomocą publicznego interfejsu API (nie ma znaczenia, czy są one konwertowane podczas budowy, czy zapewniasz równość, akcesoria i inne operacje, które w jakiś sposób ignorują różnicę) .