Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Я голосую за "подхалима в рефакторингах" за подход, который является, я верю, способ осуществить рефакторинг предназначен, чтобы быть сделанным во-первых. Это - вероятно, плохая идея осуществить рефакторинг только ради "чистки кода". Это означает внесение изменений ни для какой настоящей причины. Рефакторинг, по определению, изменяет без намерения исправления ошибок или добавления опций. Если Вы следуете за принципом KISS, любая новая возможность испытывает необходимость по крайней мере в некотором рефакторинге, потому что Вы действительно не думаете о том, как сделать самую расширяемую систему возможной в первый раз вокруг.
Если Вы работаете в месте с таким негибким (и смешной) политика, лучшее решение состоит в том, чтобы найти другое задание!
Если Вы работаете над блоком кода, в большинстве случаев поэтому существует или исправление ошибки или новая возможность, которая требует, чтобы блок кода для изменения, и рефакторинг был или до изменения для помощи, или после изменения для уборки результата. Или в случае, можно связать рефакторинг с тем исправлением ошибки или в функцией.
Позволяет взглянули на каждую опцию:
Если Вы чувствуете, что по Вашему мнению исходный код излагает угрозу безопасности или потенциал для катастрофического отказа или нестабильности. Запишите маленький отчет об ошибках, обрисовывающий в общих чертах опасность, и затем зафиксируйте ее.
Это могло бы быть более твердо к реакторному коду на основе запроса новых функций. Но Вы могли использовать допустимый запрос новых функций, чтобы сделать это, которое приводит меня на следующий вопрос...
Если существует допустимая ошибка или функция, заявите, что функция x должна была быть изменением немного, чтобы исправить ошибку или добавить опцию.
Это, кажется, предлагает сам, разработка посредством улучшения приложения не позволяется. Разработчикам нужно разрешить, в противном случае призвать к проводнику новые методы и технологии.
Возможно, Вы могли обсудить свое улучшение на соответствующей встрече, приведя убедительные причины, почему изменения должны быть внесены. Затем, по крайней мере, у Вас будет управление, отступающее к изменению, не имея необходимость красться в коде через другой метод.
Путем мы работаем, это: должно быть серьезное основание осуществить рефакторинг код, иначе почему?
Если причина состоит в том, чтобы позволить другой функции использовать тот же код, связывать изменения с запросом другой функции.
Если это должно сделать что-то быстрее, создать запрос новых функций для быстрее 'xyz' и связать изменения с тем - затем, клиенты видят, что Вы улучшаете продукт.
Если это должно разработать ошибку, зарегистрировать ошибку.
Стоит отметить, что в моей среде, политика не может быть осуществлена. Но умные менеджеры могут получить сообщения об изменениях и если у них нет bug\request ссылки в тексте фиксации, он развит.