Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Фундаментальное понятие CI - то, что у Вас есть система, которая создает код и запускает автоматизированные тесты каждый раз, кто-то делает фиксацию к системе управления версиями. Эти тесты включали бы модульные тесты и функциональные испытания, или даже поведение управляемые тесты.
преимущество - то, что Вы знаете - сразу - когда кто-то повредил сборку. Это означает любого A) Они фиксировали код, который предотвращает компиляцию, которая завинтила бы любого, кто сделал 'обновление', или B) Они фиксировали код, который повредил некоторые тесты, который или означает, что они представили ошибку, которая должна быть исправлена, или тесты, должен быть обновлен для отражения изменения в коде.
, Если Вы - сольный разработчик, CI не вполне как полезный, если Вы находитесь в хорошей привычке к запущению Ваших тестов перед фиксацией, которая является тем, что Вы должны сделать. Однако Вы могли разработать дурную привычку к разрешению CI сделать Ваши тесты для Вас.
Как сольный программист, это главным образом снижается для дисциплинирования. Используя CI полезный навык для имения, но Вы не хотите разрабатывать любые дурные привычки, которые не перевели бы в среду команды.
Преимущество CI находится в способности обнаружить рано, когда регистрация повредила сборку. Можно также выполнить комплект автоматизированных тестов против сборки, а также выполнить любой вид инструментов, чтобы дать Вам метрики и такой.
, Очевидно, это очень ценно, когда у Вас есть команда разработчиков, не, все из которых прилежны для проверки на повреждение изменений. Как сольный разработчик, это не совсем как ценное. По-видимому, Вы выполняете свои модульные тесты и даже возможно, интеграционные тесты. Однако я видел много случаев, где разработчик забывает к регистрации файл из набора.
сборка CI может также считаться Вашей сборкой "выпуска". Среда должна быть стабильной, и незатронутой любой штуковиной разработки, которую Вы просто добавляете к своей машине. Это должно позволить Вам всегда воспроизводить сборку. Это может быть ценно, если Вы добавляете новую зависимость к своему проекту и забываете устанавливать среду сборки конечных версий для принятия этого.
Если необходимо поддерживать несколько компиляторов тогда, удобно иметь систему сборки CI, чтобы сделать все это, пока Вы просто разрабатываете в одном IDE. Мои сборки кода с Vc6 через VS2008 в x86 и x64 основываются на VS2005 & 8, таким образом, это - 7 сборок на проект на конфигурацию проекта... Наличие системы CI означает, что я могу разработать в одном IDE и позволить системе CI доказать, что все компиляторы, что я поддерживаю все еще сборку.
Аналогично, если Вы создаете, освобождает, которые используются несколькими проектами тогда, CI удостоверится, что они работают со ВСЕМИ проектами, а не просто тем, с которым Вы работаете прямо сейчас...
Истина, что непрерывная интеграция имеет большую часть смысла в командах. Единственные разработчики могут также получить некоторые преимущества, необходимо решить себя, если их достаточно для противостояния времени, Вы вкладываете капитал в установку системы CI.
Мы используем нашу систему CI, чтобы сделать Сборки конечных версий (а также обычные автоматические сборки "на фиксации").
Способность нажать кнопку, которая начинает Сборку конечных версий, которая ступает посредством всех процессов для выпуска установки:
В Гибкой среде, где Вы ожидаете поставлять рабочее программное обеспечение каждые 2-4 недели, это определенно стоит иметь, даже в команде 1.
CI приносит пользу сольному разработчику в том смысле, что Вы знаете, если Вы забыли регистрировать что-то (потому что сборка будет повреждена). Значение интеграции его уменьшено, когда нет никаких других разработчиков, все же.
Как отмечали другие люди , CI действительно имеет преимущества для индивидуального разработчика. Но вопрос, который вы должны задать себе: стоит ли накладных расходов? Если вы похожи на меня, то, вероятно, потребуется час или два, чтобы настроить систему CI для проекта, просто потому, что мне нужно выделить сервер, настроить всю сеть, и установите программное обеспечение. Помните, что система CI сэкономит вам всего несколько секунд за раз. Для индивидуального разработчика это время вряд ли будет больше, чем время, которое потребовалось для настройки CI.
Однако, если вы никогда раньше не настраивали систему CI, я рекомендую сделать это только для ради того, чтобы научиться это делать. Это не займет так много времени, чтобы не стоить обучения.