Другое событие 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));
}
Абсолютно Вы на правильном пути. Если Вы не абстрагируете далеко безумие, то Вы в конечном счете уступите безумию сами.
у Вашего коллеги есть актуальный вопрос, хотя, таким образом, я предлагаю, Вы также кодируете простой способ определить данные к столбцу, отображающемуся в PHP.
Это не о хранении его просто, это о модифицировании прочной основы для здания.
вещь, которая взволновала бы меня, состоит в том, что этот вид случайного дизайна часто скрывает определенные бизнес-правила, вещи как "..., если пол является датой затем, они, должно быть, купили виджет в какой-то момент поэтому, их нельзя позволить fribbish lubdub..." - сумасшедший, я знаю, но более распространенный, чем это должно быть.
Имена исключительно важны. Если Вы хотите, чтобы Ваше приложение было удобно в сопровождении, зафиксировало их, прежде чем кодовая база вырастет далее.
Я не сказал бы, что Вы усложняете вещи.
книжный Домен Eric Evan Управляемый Дизайн имеет прекрасный термин для этого: Анти-Уровень
ПоврежденияДля проигрывания Адвоката Дьявола существует что-то, чтобы быть сказанным для того, чтобы не иметь ненужный слой косвенности в загрузке кратковременной памяти для работы с системой. Однажды знакомый с кодом, Вы будете знать то, что входит, какая переменная, таким образом, основное преимущество является кому-то новым забиранием кода с нуля. Однако решение той проблемы правильно также потребовало бы согласовывания схемы базы данных, которая (a) была бы значительным собранием произведений и (b) в основном заставила бы проблему уйти.
нет никакого черно-белого ответа на этот вопрос, и отсутствие очевидного решения Вашей определенной проблемы предполагает, что можно хотеть избежать неприятных вопросов.
, С другой стороны, если операция очистки в границах возможности затем, можно хотеть сделать это на основе типа рефакторинга, инкрементно ремонтируя имена столбцов DB, поскольку возможность возникает.
Просто создайте представления, где это больше всего необходимо.
Это - хороший вопрос, поскольку он говорит с основой о кодировании, по моему скромному мнению.
я пошел бы с Вами и кратким обзором плохие имена на читаемые достойные имена. Причем результатом является немного сложности для очень более логически понятный и читаемый код.
Вы не сказали, что не можете переименовать столбцы в Доступе, так.... сделать это! Другая возможность состояла бы в том, чтобы создать представления для каждой таблицы и переименовать столбцы в представлении. Затем вместо того, чтобы работать с таблицей Employees, Вы работаете с представлением vEmployees. Если я вспоминаю правильно, Доступ позволяет Вам обновить представления, а также выбор от них. Если Вы используете ORM с PHP, который не может поддерживать представления обновления как бы то ни было.
Трудно кодирующие имена таблиц и имена столбцов никогда не являются хорошей идеей, даже когда имена имеют смысл.
я не знаю, если использование массивов является лучшим решением все же. Я не действительно знаком с PHP, но я пошел бы с чем-то как постоянные строки для хранения имен таблиц. На языках я работаю в этом, привел бы к большему количеству читаемого кода.
Вы очень неудачны для застревания с этой базой данных, но я думаю в целом, что способ абстрагировать имена полей во что-то более разумное более умен.
я, возможно, создал бы структуру данных, содержащую имя базы данных, санированное имя, ввести и поле для содержания, когда Вы вытаскиваете данные из DB. Это дало бы удобный способ соединить вещи, таким образом, Вы не только отображение далеко сумасшедшая схема имени.
Абсолютно Вы делаете правильную вещь. По-моему, лучше реализовать некоторую исправность там. Продвижение, Вы - логика, не был бы, выбрасывают, если они решили изменить ту базу данных или какой-либо из, его - имена столбцов. При создании отображения правильного пути должно быть легко просто включить новое право таблиц/столбцы.
В любом случае то, что Вы делаете, улучшает гибкость Вашего полного решения.
, Конечно, я все еще сказал бы, что KISS относится к методу Вашего отображения!
Используя надлежащие имена столбцов в Вашем конце приложения является лучшим, можно сделать. И необходимо ли сделать это, если Вы не хотите должными быть искать, "чем то поле, как предполагалось, было снова?" когда необходимо посмотреть на него снова после того, как Вы сделали что-то еще.
точка Вашего коллеги не должна сверхусложнять вещи. Это допустимо, также.
Так инкапсулируют доступ к полям в методе или методах и имеют тот метод, делают перевод. Используя карты это не должно быть проблемой производительности.
На самом деле помещение всего отображения на источник данных в одном объекте могло бы помочь Вам, если Ваш клиент пересматривает для использования реальный база данных. И клиенты любят изменять свое мнение.
Почему бы не создать datalayer с классами, которые отображаются на каждой таблице. Затем можно определить методы класса получить доступ к столбцам и дать методы безотносительно имен, которые Вы хотите. Затем datalayer код доступа к базе данных является единственной вещью, которая должна знать о реальных именах столбцов. Я подозреваю, что кто-то (возможно, несколько soneones) уже разработал платформу, чтобы сделать это. Google "php orm".
Все еще необходимо поддержать базу данных. Один возможный подход, который я могу предложить, должен отобразить имена полей в коде приложения, поскольку Вы планируете его, чтобы сделать. Но затем рано или поздно необходимо начать обрабатывать это безумие именования с именами полей и зафиксировать его. Это не хорошая идея только, чтобы скрыть от проблемы и предположить, что это - безопасное решение и хороший способ пойти. Это - только временное обходное решение. Не делайте полный Ваш сам об этом.