Должны программы Java, скомпилированные с отладочной информацией не использоваться в производственной системе?

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

11
задан 5 revs 23 May 2017 в 12:02
поделиться

5 ответов

8
ответ дан 3 December 2019 в 07:38
поделиться

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

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

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

3
ответ дан 3 December 2019 в 07:38
поделиться

Зависит от чрезмерности отладки и чувствительности к производительности вашей программы. 90% мира с умеренной отладкой не должны волноваться.

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

0
ответ дан 3 December 2019 в 07:38
поделиться

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

Утверждения также не представляют большой проблемы, если, конечно, в очень чувствительном к производительности фрагменте кода . Вы должны иметь возможность полностью исключить их, поскольку утверждения assert обычно используются для проверки того, что не может произойти (при правильном использовании). Но преодолевать трудности, пусть даже небольшие, для их устранения на самом деле нет необходимости.

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

0
ответ дан 3 December 2019 в 07:38
поделиться

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

Однажды вы столкнетесь с ошибкой в ​​своей программе, в которой имеющаяся у вас информация ONLY является трассировкой стека, и ошибка не может быть воспроизведена по команде, она была совершенно неожиданной. оригинальные программисты, и это ВАША работа, чтобы исправить это. Чем больше информации будет доступно вам в этом стеке трассировки, тем лучше! Оставьте всю отладочную информацию в!

Если можете, используйте структуру ведения журнала (для получения трассировки стека в файл), которая может предоставить информацию о jar-файле, в котором был обнаружен каждый класс. Logback может сделать это, и я считаю, что log4j тоже.

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

С точки зрения производительности Я считаю, что со времен HotSpot это не имело значения.

5
ответ дан 3 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: