Скажите, что я повторно реализую метод поиска позиции строки в строке. Поэтому я получаю либо позицию, которая является целым числом, либо «магическим числом», как -1. Я вижу этот шаблон во многих языках программирования, где некоторые возвращают значение, подобное null
, некоторые возвращают какое-то случайное значение «вне диапазона» как -`, некоторые полностью вызывают ошибку.Что вернуть, если что-то не получилось, а не вернуть «магическое число»?
Есть ли «лучшая практика» на этом или, по крайней мере, что-то более явное на другом языке программирования, о котором я не знаю?
Невысокие значения, если вы хотите, чтобы ваш код был чище? С таким флагом, как Node.js, вы, по крайней мере, более четко различаете между двумя типами результатов, тогда как возврат только значения «вне диапазона» объединяет все вместе. – anemaria20
Несомненно, это * проблема *, которую вы должны учитывать. В зависимости от языка это может * быть действительно удобным, чтобы объединить их вместе; например PHP часто возвращает «false» или * значение falsey, которое вы можете относить одинаково, если хотите или можете различать более подробно, когда вам нужно (классический пример 'strpos (...) === false'). Это становится очень проблематичным, когда допустимое возвращаемое значение несколько не отличается от значения ошибки. По этой причине более новые языки выбирают исключения/отдельные флаги err. – deceze