История изменений
Исправление iZEN, (текущая версия) :
Demo 2
Рефакторинг кода для написания тестов
14) Реорганизация кода примера в NetBeans и IDEA практически один-в-один, не считая, конечно, отличий в интерфейсе диалоговых окон.
15) Автоматический статический импорт в NetBeans тоже есть.
Demo 3
Генерация элементов класса
16) Создание нового класса из объявления new Person(...) в NetBeans сделано иначе, в IDEA. По Alt+Enter разрешения противоречий в NetBeans предлагается два варианта: создать независимый класс в пакете, либо объявить в текущем классе в качестве внутреннего приватного статического класса. В IDEA появляется отдельный диалог с кнопками OK/Cancel для выбора целевого пакета и целевого каталога, а в NetBeans все пункты для выбора нужного способа находятся во всплывающей подстрочной подсказке. Здесь NetBeans удобнее. Зато IDEA догадалась обозвать параметры конструктора нового класса более подходящими именами (String name, int age), в то время как NetBeans тупо взяла за основу содержимое параметра и обезличила второй: public Person(String nik, int i).
17) Создание одноимённых полей по сигнатуре конструктора нового класса в NetBeans затруднена, необходимо поработать с редактором кода в теле конструктора, чтобы были определены сущности для полей: this.name = name; this.age = age;. Поля могут быть финальными по разрешению противоречий Alt+Enter.
18) Генерация get/set для полей реализована при этом модификатор final для поля, инициализированного в конструкторе, учитывается, и не генерируется противоречивый код с присваиванием значений финальному полю.
19) Генерация методов equals() и hashCode(). В NetBeans реализуется через вызов пункта контектного меню «Втавка кода...» Создать equals() и hashCode(). Открывается диалог с двумя одинаковыми списками полей, значения которых нужно выбрать для использования в этих двух методах, всё наглядно и просто. А в IDEA для этого используется мастер. Код получается похожим, обе среды предлагают сделать его короче, автоматически оптимизируя условные выражения, что, кстати, вызвало смех в зале. :) Результирующий код NetBeans после автоматических генерации и оптимизаций:
@Override
public int hashCode() {
int hash = 3;
hash = Objects.hashCode(this.name) + hash * 37;
hash = hash * 37 + this.age;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if (!Objects.equals(this.name, other.name)) {
return false;
}
return this.age == other.age;
}
Demo 4
Навигация по проекту.
20) NetBeans тоже может искать в дереве файлов файл с вводимым именем, но к заданной строке в нём не переходит.
21) Случаи использования. В NetBeans эта команда доступна в контектном меню элемента из дерева окна Проектов и в элементах дерева Навигатора классов. При вызове открывается диалоговое окно для задания параметров поиска (в комментариях, в преопределённых, перегруженных методах; внутри текущего проекта, среди открытых проектов, задать собственный контекст поиска и т.д.). Результаты поиска отображаются в отдельном окне-вкладке области вывода, новый поиск открывает новое окно с результатами — можно сравнивать и анализировать несколько поисковых запросов одновременно. В окне результата поиска возможна группировка по критериям, но она беднее (только логический и физический виды), чем в IDEA.
Demo 6
Улучшение существующего кода
22) <Сравнение сред слишком сложное>
Demo 7
Печатная машинка vs. мышь
23) Идея изучения шорткатов простив мышевозни. Однако ведущий не принижает роль мыши в IDE: нужда в ней возникает при навигации по ссылкам и меню, при просмотре кода, работе с IDE как с CAD (средой проектирования).
Demo 8
Общие принципы эффективной работы
24) Статистика использования Code Completion за последнее время. Интересная и прикольная фича в IDEA. Для самоанализа и самокопания. ;)
25) Автосохранение файлов. Знакомо. В NetBeans есть внутренняя история изменений каждого файла. Можно историю завязать на систему контроля версий Mercurial, Git, SVN через плагины. Просмотр diff между текущим файлом и какой-то версией в истории изменений тоже работает в среде абсолютно прозрачно (во вкладках окна редактирования). В IDEA такая особенность есть?
26) Автоформатирование при сохранении. Использую в NetBeans: автоматически убираются неиспользуемые объявления импорта, реорганизацию импорта. Для всех языков можно настроить общие действия автоформата при сохранении (убрать концевые пробелы, например, и переформатировать строки).
Спасибо за внимание. Освежил свои знания по средам и их возможностям работы с кодом.
Исходная версия iZEN, :
По просмотренному сравню NetBeans с IDEA (продолжение).
Demo 2
Рефакторинг кода для написания тестов
14) Реорганизация кода примера в NetBeans и IDEA практически один-в-один, не считая, конечно, отличий в интерфейсе диалоговых окон.
15) Автоматический статический импорт в NetBeans тоже есть.
Demo 3
Генерация элементов класса
16) Создание нового класса из объявления new Person(...) в NetBeans сделано иначе, в IDEA. По Alt+Enter разрешения противоречий в NetBeans предлагается два варианта: создать независимый класс в пакете, либо объявить в текущем классе в качестве внутреннего приватного статического класса. В IDEA появляется отдельный диалог с кнопками OK/Cancel для выбора целевого пакета и целевого каталога, а в NetBeans все пункты для выбора нужного способа находятся во всплывающей подстрочной подсказке. Здесь NetBeans удобнее. Зато IDEA догадалась обозвать параметры конструктора нового класса более подходящими именами (String name, int age), в то время как NetBeans тупо взяла за основу содержимое параметра и обезличила второй: public Person(String nik, int i).
17) Создание одноимённых полей по сигнатуре конструктора нового класса в NetBeans затруднена, необходимо поработать с редактором кода в теле конструктора, чтобы были определены сущности для полей: this.name = name; this.age = age;. Поля могут быть финальными по разрешению противоречий Alt+Enter.
18) Генерация get/set для полей реализована при этом модификатор final для поля, инициализированного в конструкторе, учитывается, и не генерируется противоречивый код с присваиванием значений финальному полю.
19) Генерация методов equals() и hashCode(). В NetBeans реализуется через вызов пункта контектного меню «Втавка кода...» Создать equals() и hashCode(). Открывается диалог с двумя одинаковыми списками полей, значения которых нужно выбрать для использования в этих двух методах, всё наглядно и просто. А в IDEA для этого используется мастер. Код получается похожим, обе среды предлагают сделать его короче, автоматически оптимизируя условные выражения, что, кстати, вызвало смех в зале. :) Результирующий код NetBeans после автоматических генерации и оптимизаций:
@Override
public int hashCode() {
int hash = 3;
hash = Objects.hashCode(this.name) + hash * 37;
hash = hash * 37 + this.age;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if (!Objects.equals(this.name, other.name)) {
return false;
}
return this.age == other.age;
}
Demo 4
Навигация по проекту.
20) NetBeans тоже может искать в дереве файлов файл с вводимым именем, но к заданной строке в нём не переходит.
21) Случаи использования. В NetBeans эта команда доступна в контектном меню элемента из дерева окна Проектов и в элементах дерева Навигатора классов. При вызове открывается диалоговое окно для задания параметров поиска (в комментариях, в преопределённых, перегруженных методах; внутри текущего проекта, среди открытых проектов, задать собственный контекст поиска и т.д.). Результаты поиска отображаются в отдельном окне-вкладке области вывода, новый поиск открывает новое окно с результатами — можно сравнивать и анализировать несколько поисковых запросов одновременно. В окне результата поиска возможна группировка по критериям, но она беднее (только логический и физический виды), чем в IDEA.
Demo 6
Улучшение существующего кода
22) <Сравнение сред слишком сложное>
Demo 7
Печатная машинка vs. мышь
23) Идея изучения шорткатов простив мышевозни. Однако докладчик не принижает роль мыши в IDE: нужда в ней возникает при навигации по ссылкам и меню, при просмотре кода, работе с IDE как с CAD (средой проектирования).
Demo 8
Общие принципы эффективной работы
24) Статистика использования Code Completion за последнее время. Интересная и прикольная фича в IDEA. Для самоанализа и самокопания. ;)
25) Автосохранение файлов. Знакомо. В NetBeans есть внутренняя история изменений каждого файла. Можно историю завязать на систему контроля версий Mercurial, Git, SVN через плагины. Просмотр diff между текущим файлом и какой-то версией в истории изменений тоже работает в среде абсолютно прозрачно (во вкладках окна редактирования). В IDEA такая особенность есть?
26) Автоформатирование при сохранении. Использую в NetBeans: автоматически убираются неиспользуемые объявления импорта, реорганизацию импорта. Для всех языков можно настроить общие действия автоформата при сохранении (убрать концевые пробелы, например, и переформатировать строки).
Спасибо за внимание. Освежил свои знания по средам и их возможностям работы с кодом.