Предоставление предлагаемых решений в сообщениях об ошибках

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

Вопрос

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

Существуют инструменты < lint " для предоставления предложений, но AFAIK, лишь немногие разработчики используют инструменты lint регулярно или даже вообще.

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

Чего-то не хватает в удобном для пользователя дизайне (можно считать это ненужным, учитывая, что Google так хорош) или есть для этого веская причина? Предоставляют ли какие-либо компиляторы, платформы, платформы, которые вы используете, сообщения об ошибках с предложениями решения, если нет, то почему?

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

Решение

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

Я думаю, что большинство современных компиляторов и сред выполнения (Java, Ruby, Go) справляются с этой задачей достойно, с номерами строк и трассировкой стека, которые вы можете найти в большинстве ошибок. Даже если параметры Javascript становятся хорошими, он, безусловно, превосходит старые добрые "alert ()" подход к отладке.

Разве не справедливо оставить предложенные решения для IDE?

Но я согласен с тем, что видел фреймворки / библиотеки, которые были очень редки с сообщениями об ошибках, и "NullPointerException" в строке 264 " глубоко внутри какой-нибудь сторонней библиотеки, в которой у вас нет исходного кода, вам ничего не сказано.

Если это проблема, я думаю, что она в основном ограничена сторонними библиотеками. «Хорошая причина» Предполагается, что он был спешно разработан в чье-то свободное время, и они не помещали значимые сообщения об ошибках очень высоко в список приоритетов.

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

Что ты хочешь увидеть?

Error: Null Pointer Exception (suggested solution: Set the object to something).

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

Трудно найти решение ошибки . Есть так много возможностей, и, как указал @silky, некоторые просто не могут быть диагностированы.

Предупреждения - это другой зверь. Во многих ситуациях современные компиляторы используют их, чтобы сказать «Я думаю, что вы имели в виду X, когда говорили Y; Вы можете проверить это. "

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

Системы с меньшей гибкостью предлагают больше возможностей для решения проблем. Если вы введете (a b c) в свой компилятор Lisp, и он не знает, что такое a, он настолько близок к такому количеству допустимых строк кода, что не может точно предложить ни одного исправления. Если вы неправильно написали " ИДЕНТИФИКАЦИОННОЕ ОТДЕЛЕНИЕ " в начале вашей программы на COBOL компилятору относительно легко обнаружить ошибку и помочь вам. Большинство других языков лежат между этими крайностями.

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

Это ничем не отличается от любого другого искусства. Посмотрите на музыкантов или художников, мастеров боевых искусств, актеров, писателей, шеф-поваров или даже людей, которые учатся говорить по-испански: когда они молоды и неопытны, они попадают в систему, в которой много структур, и если они совершают ошибку кто-то может легко исправить их. По мере того, как они становятся более квалифицированными, им требуется и требуется все меньше и меньше поддержки Когда они сами стали экспертами, им вообще не нужна поддержка, но оборотная сторона медали в том, что вы не можете так же легко указать, что правильно или неправильно. Если ваш ребенок красит за пределами линий, вы можете объяснить проблему, но если бы Пикассо или Поллок сделали плохой мазок, что бы вы сказали? Или если Филип Гласс ставит записку не на своем месте, или Брюс Ли слишком сильно превращает свое тело в удар? И кто хотел бы работать в искусстве, которое настолько ограничено, что мирские вещи невозможны? Компиляторы COBOL все еще существуют, если кто-то действительно хочет их, но гораздо больше людей платят деньги за ужасные картины, чем за искусные распечатки по цветам.

Более конкретно, есть сайт, ErrorHelp (далее bug.gd), который позволяет вводить сообщение об ошибке и получить результат, и он старше, чем SO, но никто не использует это . Я пробовал. Если только вы не находитесь в контексте, где есть только один возможный ответ, простой словарь для решения предложенного решения не работает, и, следовательно, это полный провал в любой области творчества.

Большинство IDE имеют свои собственные компиляторы. Это позволяет им выполнять частичную компиляцию, рефакторинг кода и многие другие приемы. Я считаю сообщения об ошибках и предложения весьма полезными. Тот факт, что компилятор не вызывается из командной строки, не означает, что он не является компилятором.

альтернативный текст http://www.theeggeadventure.com /wikimedia/images/1/1f/Eclipse-error.png

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