Почему мир программного обеспечения заполнен кодами статуса?

Почему программисты когда-либо начали использовать коды статуса? Я имею в виду, я думаю, я мог представить, что это может быть полезно в те времена, когда текстовая строка была дорогостоящим ресурсом. WAYYY тогда. Но даже после того, как мы работали с мегабайтами памяти, мы продолжали их использовать. Какое возможное преимущество может быть для обфускации значения сообщения об ошибке или сообщения о статусе за кодом состояния?

Ответ 1

Легко обеспечить разные переводы кода состояния. Нужно искать строку, чтобы найти перевод на другом языке, немного глупо.

Кроме того, коды состояния часто используются в коде и вводе:

var result = OpenFile(...);
if (result == "File not fond") {
    ...
}

Невозможно обнаружить как ошибку компилятором, где as,

var result = OpenFile(...);
if (result == FILE_NOT_FOND) {
    ...
}

Будет.

Ответ 2

Он позволяет локализовать и изменить текст сообщения об ошибке.

Ответ 3

Это та же самая причина, что и раньше. Номера дешевы, струны дороги, даже в сегодняшнем мега/гигабайтном мире.

Ответ 4

Я не думаю, что коды состояния являются обфускацией; это просто абстракция состояния.

Большое использование целочисленных кодов состояния находится в Конечный автомат. Наличие состояний в целых числах позволяет эффективному оператору switch перейти к правильному коду.

Целые числа также позволяют использовать эффективное использование полосы пропускания, что по-прежнему является очень важной проблемой в мобильных приложениях.

Еще один пример целых кодов над строками для сравнения. Если у вас одинаковые статусы, сгруппированные вместе (например, статус 10000-10999), выполнение сравнения диапазонов, чтобы узнать тип состояния, является основным выигрышем. Не могли бы вы сделать сравнение строк, чтобы узнать, является ли код ошибки фатальным или просто предупреждение, eww.

Ответ 5

Числа могут быть легко сопоставлены, в том числе другой программой (например, был сбой). Человекочитаемые строки не могут.

Рассмотрим некоторые из вещей, которые вы можете включить в сравнение строк, а иногда и не может:

  • Параметры кодирования
  • Диапазон поддерживаемых символов (сравните ASCII и Юникод)
  • Чувствительность к регистру
  • Акцентная чувствительность
  • Accent encoding (разложенные или составленные уникодовые формы).

И это прежде, чем разрешить большинство людей, которые не говорят по-английски.

Ответ 6

404 является универсальным в Интернете. Если не было кодов состояния, представьте, есть ли у каждой другой части серверного программного обеспечения своя строка ошибок?

  • "Файл не найден"
  • "Файл не существует"
  • "Не удалось получить доступ к файлу"
  • "Ошибка представления файла пользователю"
  • "Не удалось выполнить рендеринг файла"
  • "Не удалось отправить файл клиенту"
  • и т.д...

Даже когда мы игнорируем длину данных, еще лучше иметь стандартные числовые представления, которые повсеместно понятны, даже если они сопровождаются действительными сообщениями об ошибках.

Ответ 7

Компьютеры по-прежнему являются двоичными машинами, а числовые операции по-прежнему дешевле и быстрее, чем операции с строкой.

Ответ 8

Целочисленное представление в памяти является гораздо более последовательной вещью, чем строковое представление. Для начала просто подумайте обо всех этих нулевых и паскальных строках. Чем вы можете думать о ASCII и персонажах от 128 до 255, которые были разными в зависимости от разных кодовых страниц и заканчивались символами Юникода и всеми их маленькими эндианскими большими концами, UTF-8 и т.д.

Как бы то ни было, возвращение целого числа и наличие отдельного ресурса, указывающего, как интерпретировать эти целые числа, является гораздо более универсальным подходом.

Ответ 9

Хорошо, когда вы разговариваете с клиентом по телефону, номер намного лучше, чем строка, а строка может быть на разных языках, номер которой невозможен, попробуйте googeling какой-нибудь текст ошибки, давайте скажем, шведский, а затем попытаемся найти его в Google Угадайте, где вы получаете лучший удар.

Ответ 10

Потому что не все говорят по-английски. Это проще для перевода кодов ошибок на несколько языков, чем для подражания вашей базы кода строками.

Кроме того, машинам проще понять коды, поскольку вы можете назначить классы ошибок для ряда чисел. Например, 1-10 - проблемы ввода-вывода, 11-20 - db и т.д.

Ответ 11

Коды состояния уникальны, в то время как строки могут быть не такими. Существует только один код состояния, например "213", но может быть много интерпретации, например, "файл не найден", "Файл не найден", "Файл не найден!", "Datei nicht gefunden", "Файл не существует"....

Таким образом, коды состояния содержат информацию как можно проще!

Ответ 12

Как насчет обратной совместимости с 30-летними библиотеками программного обеспечения? В конце концов, некоторый код все еще написан на C...

Также... наличие мегабайт доступной памяти не является оправданием для их использования. И это предполагает, что вы не программируете встроенное устройство.

И... это просто бессмысленная работа для процессора. Если компьютер ослеплятельно работает при обработке строк, представьте, что ускорение скорости достигается за счет эффективных методов кодирования.

Ответ 13

Я работаю на мэйнфреймах, и там обычно для приложений есть каждое сообщение, добавленное кодом (обычно 3-4 буквы по продукту, 4-5 номеров по конкретному сообщению, а затем письмо с указанием серьезности сообщения). И я бы хотел, чтобы это было обычной практикой на ПК.

Есть несколько преимуществ, кроме перевода (как упоминалось другими):

  • Легко найти сообщение в руководстве; обычно программное обеспечение сопровождается руководством по сообщениям, объясняющим все сообщения (и возможное решение и т.д.).

  • Возможно, программное обеспечение автоматизации может реагировать определенным сообщением в журнале определенным образом.

  • Легко найти источник сообщения в исходном коде. Вы можете иметь дополнительные коды ошибок для определенного сообщения; в этом случае это снова полезно при отладке.

Ответ 14

Для всех практических целей числа являются лучшим представлением для статусов, даже сегодня, и я предполагаю, что это было бы на некоторое время.

Самое важное в статусных кодах - это, пожалуй, краткость и признание. Две разные системы могут разговаривать друг с другом, все, что им нужно, используя номера, но если они не согласны с тем, что означают цифры, это будет беспорядок. Совместимость - еще один важный аспект, поскольку код статуса не должен быть более подробным, чем смысл, который он пытается передать. Мир может согласиться на использование

The resource that you asked for in the HTTP request does not exist on this server

в качестве кода статуса вместо 404, но это просто неприятность.

Итак, почему мы все еще используем цифры, а именно английские цифры? Потому что это самая краткая форма представления сегодня, и все компьютеры основаны на них.

Возможно, наступит день, когда мы начнем использовать изображения или даже видео или что-то совершенно невообразимое для представления кодов состояния в сильно абстрагированной форме, но мы пока не находимся. Даже для строк.

Ответ 15

Помогите конечному пользователю понять, что происходит, когда что-то не так.

Ответ 16

Это помогает иметь очень простой метод предоставления статусов четко и универсально. В то время как строки можно легко вводить по-разному в зависимости от диалекта, а также иметь грамматические изменения, цифры не имеют грамматического форматирования и не изменяются с помощью диалекта. Существует также проблема хранения и передачи, строка больше и, следовательно, занимает больше времени для передачи по сети и хранения (даже если она составляет несколько тысячных доли миллисекунды). Из-за этого мы можем назначать числа как универсальные идентификаторы для статусов, поскольку они могут передавать быстрее и более пунктуальны, а программы, которые их читают, могут идентифицировать их, как бы они ни желали (будучи многоязычными).

Плюс, легче читать вычислительно:

switch($status) {
case '404':
echo 'File not found!';
break;
case '500':
echo 'Broken server!';
break;
}

и др.