Это зависит от многих. Но вы должны решить что-то сделать и задокументировать .
Единственная определенно неправильная вещь для вашего кода - забыть учесть, что пользовательский ввод может быть вне ожидаемого диапазона, и написать код, который случайно имеет некоторое поведение. Потому что тогда некоторые люди сделают неверное предположение о том, как ваш код ведет себя, и это вызовет ошибки, в то время как другие в конечном итоге будут зависеть от поведения, которое ваш код имеет случайно (даже если это поведение совершенно ненормально), и поэтому вы будете вызывать больше ошибок когда вы позже решите проблему.
В этом случае я могу видеть аргументы в любом случае. Если кто-то путешествует +10 градусов от 175 градусов, он должен в конечном итоге на -175. Если вы всегда нормализуете пользовательский ввод и, таким образом, рассматриваете 185 как эквивалентное -175, тогда клиентский код не может поступить неправильно, когда он добавляет 10 градусов; это всегда имеет правильный эффект. Если вы воспринимаете 185 как ошибку, вы заставляете каждый случай, когда клиентский код добавляет относительные градусы, вставлять в логику нормализации (или, по крайней мере, не забывать вызывать процедуру нормализации), вы на самом деле вызываетеошибки (хотя, надеюсь, легко поймать те, которые будут быстро устранены). Но если значение долготы вводится пользователем, записывается буквально в программе или вычисляется с помощью какой-либо процедуры, которая всегда должна быть в [-180, 180), то значение вне этого диапазона, скорее всего, будет указывать на ошибку, поэтому «с любовью» «Преобразование это может скрыть проблемы.
Мой идеал в этом случае, вероятно, будет определять тип, который представляет правильный домен. Используйте абстрактный тип (не позволяйте клиентскому коду просто обращаться к необработанным числам внутри него) и предоставьте как нормализующую, так и проверочную фабрику (чтобы клиент мог сделать компромисс). Но независимо от значения этого типа, значение 185 должно быть неотличимо от -175 при просмотре через ваш общедоступный API (не имеет значения, преобразованы ли они в конструкцию или вы предоставляете равенство, методы доступа и другие операции, которые каким-то образом игнорируют разницу) ,