Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Не ставьте под угрозу удобочитаемость для догматических правил о точном количестве символов подряд. Горизонтальная прокрутка является нежелательным, но строка с 81 символом легче считать, чем добавление отступа смутно обернутую в строку версию.
80 символов, вероятно, будет несоответствующим для стилей программирования с большими добавлениями отступа и/или подробными именами переменной. Подавите сумму логической сложности к на строку максимум, не количество символов.
По-видимому, у меня есть строки до 258 символов в длине (считающий вкладки как два символа) в одном из моих недавних проектов, таким образом, существует мой ответ. =)
Я придерживаюсь этих 80 правил строк (И попытайтесь убедить всех делать то же). Некоторые причины:
Вам не придется прокрутить горизонтально для чтения кода. Но большие экраны не означают более длинные строки! Существует также предел тому, на какое количество там должен пойти в одной строке.
, Таким образом, я говорю: Сохраните его в 70-80 символах так же, как всегда. Большие экраны просто означают что IDE как больше комнаты.
Это также зависит от других соглашений, которые Вы используете. В одном задании мы программировали в Java, и соглашение состояло в том, чтобы использовать долгие и описательные идентификаторы, которые означали, что только несколько их могли соответствовать на строке, не сталкиваясь с пределом с 80 символами. Я думал, что это было довольно глупым рассмотрением, что каждому разработчику в компании дали широкоэкранный монитор, который мог легко соответствовать 200 символам. С аппаратной непротиворечивостью как этот не имеет никакого смысла осуществлять глупо маленький предел обертки строки.
Я предпочитаю более длинные строки по одной простой причине: Я могу вместить больше кода в свое окно. Существует огромны различие между необходимостью прокрутить вертикально для чтения функции и способности приспособить его на единственном экране. Если все обертывается в строку так, чтобы функция прокрутила от нижней части, в то время как правильная половина моего экрана пуста, я полагаю что быть огромными отходами. Обратите внимание, что открытие двух окон редактора не помогает здесь также.
Больший экран - Больший шрифт. Я использую GVim с Conslas
14 ПБ, максимизируемых в 1280x800 разрешение экрана. Я пытаюсь перенестись приблизительно в 80-90%-м экране width.
Я программирую почти исключительно на ноутбуке, таким образом, я соглашаюсь с более короткими строками. Предоставленный, я обычно разрабатываю экраны для PDAs, таким образом, я могу выйти сухим из воды. Но если код будет совместно использован разработчиками, то он закончится на чьем-то ноутбуке в конечном счете, и полосы прокрутки заставляют меня кричать.
Мы используем стандарт кодирования 80 символов в строке. Исходная причина 80 символьных ограничений не релевантна сегодня, но некоторое число должно быть выбрано...
Около очевидного (кодируют организацию и удобочитаемость) обычно я находил, что длинные линии являются результатом плохого моделирования, и после такого правила улучшают качество кода и уменьшают ошибки. Просто сравните следующие примеры:
status = do_something();
if (status == error)
{
do_error_handling();
return;
}
/* do you regular flow */
status = do_more();
if (status == error)
{
do_error_handling();
return;
}
/* do more of you regular flow and keep you line 80 chars*/
вместо этого:
status = do_something();
if (status == succes)
{
/* do you regular flow */
status = do_more();
if (status == success)
{
/* do you regular flow */
/* nest again and get line behind visible screen */
}
else
{
/* do error handling */
}
}
else
{
/* do error handling */
}
Второй пример намного менее читаем трудно для поддержания и вероятно приведет к некоторой проблеме на пути...
Редактирование
Замененный goto
с do_error_handling()
в коде для предотвращения не соответствующего обсуждения.
, Поскольку я заявил перед 80 символами, не релевантными сегодня, это - просто номер 100, хорошо также.
Для любого, который найденный вторым примером, более читаемым, вложите его еще несколько раз с реальным кодом и попробуйте чтение снова:)
Я использую приблизительно 72-75 столбцов, чтобы гарантировать, что я могу распечатать код на страницах формата буквы без слишком большой проблемы. Я также использую пробелы вместо вкладок, и осторожно относительно расположения.
Для замечания, когда я ухожу правое поле я часто вставлял текстовую строку, которую я могу использовать в качестве линейки. Я установил окно экрана IDE, таким образом, линейка просто соответствует горизонтальной ширине, и затем я удостоверяюсь, что не выхожу на улицу из него.
я делаю это в .txt документах, а также.c, .java, .cpp, пакетных файлах, и т.д. Это облегчает отправлять отрывки в электронном письме, размещать в блогах, вставлять комментарии, и т.д. Линейка часто только под верхней строкой, которая определяет файл и формат текста:
/* example.txt 0.00 UTF-8 dh:2008-11-09
*---|----1----|----2----|----3----|----4----|----5----|----6----|----7----*
*/
, Конечно, соглашение комментария конкретного вида файла используется.