Насколько подробным должен быть вывод проверки?[закрыто]

StackOverflow https://stackoverflow.com/questions/108947

Вопрос

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

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

Какие предложения есть у сообщества по этому вопросу?

Это было полезно?

Решение

Когда пишете, знайте свою аудиторию.

Если вы регистрируете сообщения с предупреждениями/ошибками для собственного потребления, это довольно просто:что ты нужно знать, когда что-то пойдет не так?

Если вы регистрируете сообщения с предупреждениями/ошибками для кого-то другого, все усложняется.Что они знают?Как выглядит их ментальная модель системы?Какие проблемы может они решают, и какая информация им нужна для их решения?

Вставлять в сообщение все до последней крохи данных — это пустая трата времени: в лучшем случае читателю придется продираться через ненужную информацию, чтобы найти то, что ему нужно;в худшем случае они запутаются и в конечном итоге будут принимать решения, основываясь на неправильный данные.

Аналогия с компилятором уместна:Подумайте, как было бы неприятно, если бы вместе с каждым предупреждением сбрасывалась вся таблица символов...

Другие советы

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

Для нормальной повседневной работы я даю сообщение проверки данных, которое дает достаточно информации, чтобы пользователь мог решить проблему и проверить данные.Например, если у меня есть два поля (fieldA и fieldB), и одно из них должно быть больше другого, я бы указал это в выводе проверки, указав, какое поле является нарушающим.

Например, если A должно быть больше, чем B, и они дают ответ меньше, чем B, тогда сообщение будет таким: «Поле A должно быть больше, чем поле B».

Тем не менее, я также программирую в своих приложениях (особенно в веб-приложениях) режим отладки, который имеет подробный режим, точно сообщающий, что со всем происходит.Если эта функция включена, вы увидите два сообщения: понятную пользователю ошибку, а затем «FieldA=XX и FieldB=YY:XX не больше YY».

Это упрощенно, но это общая идея.

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

Я думаю, что существует три уровня детализации сообщения об ошибке для трех типичных групп пользователей:

  1. Конечный пользователь.Это посетитель веб-сайта или пользователь настольного приложения.Он должен получить сообщение об ошибке, если проблему невозможно компенсировать.Оно должно включать минимум информации.Конечный пользователь не должен получать по системе никакой информации, например текущей конфигурации и путей к файлам.Конечный пользователь должен обратиться к администратору.Идентификатор постоянной ошибки может помочь администратору найти дополнительную информацию.
  2. Администратору нужно больше полезной информации для самостоятельного решения проблемы.Он может включать такую ​​информацию, как таблица xy, которая не найдена или не удалось войти в базу данных.
  3. Разработчик:Если администратор не сможет решить проблему, он обратится к поставщику программного обеспечения.В этом случае администратор должен иметь возможность отправить файл журнала, чтобы разработчик мог решить его, даже если он не сможет воспроизвести проблему.

Специфика содержания журнала может обсуждаться, но, по моему опыту, уровень детализации быстро определяется во время стресс тест.
Если система не может функционировать должным образом, это потому, что вы просто:

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

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

Этвуд:Я имею в виду, что, по иронии судьбы, для устранения этого зависания, которое, как оказалось, было вызвано журналированием, мы добавили больше журналов.

Спольский:[смеется]

Этвуд:Шутка пишется сама собой!Шутка пишется сама собой, да...

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

Работа с ошибками Vs.предупреждения в первую очередь:Ошибка должна быть связана с чем-то, что нарушает стандарт.Предупреждение должно быть о чем-то, что разрешено, но, скорее всего, это не то, что задумал автор.

Например, валидатор разметки W3C предупредит об использовании синтаксиса <br /> в HTML-документе.В XHTML это означает «Разрыв строки», но в документе HTML, хотя это разрешено, на самом деле означает «Разрыв строки, за которым следует знак «больше»» (даже если большинство браузеров не учитывают это).

Что касается многословия, то, что лучше всего, зависит от того, кто использует систему.Некоторым пользователям было бы лучше использовать краткие сообщения, которые они могли бы просмотреть, в то время как другие пользователи (возможно, менее продвинутые) сочли бы дополнительную информацию полезной.Не зная больше о том, кто они, я бы предпочел использовать флаг (традиционно -v), чтобы позволить пользователю выбрать, какую версию он предпочитает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top