Нашлось время для очередной заметки о впечатлениях после программирования на Java. Предыдущие части здесь:
Часть I
Часть II
Часть III
Часть IV
Сегодня речь пойдет о впечатлениях о работе в IDE. Сразу скажу, я использовал NetBeans 6.8. Как говорят, это не самая продвинутая Java IDE, поэтому в ней невозможно прочувствовать “всю мощу” современных IDE для Java. Пусть и так. Насколько я могу предполагать, более умная IDE вызвала бы у меня еще большее неприятие.
Первое впечатление. IDE для Java действительно сильно упрощают программирование на Java. Слишком уж Java тупой и многословный язык, чтобы писать все вручную. Здесь помощь от IDE очень в тему. Так что если есть нужда писать именно на Java, то нужно иметь очень серьезные доводы, чтобы не пользоваться IDE.
Второе впечатление. IDE для Java превращает процесс программирования в диалог с компьютером. Начал писать вызов метода, спросил у IDE его точное имя – компьютер тебе его подсказал (либо вообще сделал это без твоей просьбы). Сделал вызов – компьютер тебе подсказывает, что не все исключения из этого метода ты обрабатываешь. И тут же сам у тебя спрашивает – добавить ли эти исключения в секцию throws или обернуть вызов try-catch-ем?
Так что, в какой-то степени, работа в Java IDE напоминает парное программирование. Только общаться нужно не с коллегой, а с IDE.
Третье впечатление. Когда IDE используется для набора текста программы, уже написанного ранее на бумаге, она сильно раздражает и отвлекает внимание. По мелочам, но мелочей этих ну уж очень много.
Например, поскольку у меня уже есть код методов и я знаю, что и как делает каждый метод, то хотел бы написать Javadoc комментарий сразу. Но тут выясняется, что продвинутая Java IDE ничего не может предложить мне в помощь. Поскольку она расчитана на то, что Javadoc строится по уже написанному методу. Поэтому приходится либо все самому делать внутри нового комментария, либо же сначала сделать рыбу метода, затем попросить IDE сгенерировать Javadoc, затем его подправить, а потом вернуться к написанию кода.
Имхо, когда Javadoc пишется после кода метода – это неправильный в принципе подход. Комментарии должны писаться перед кодом. Не можешь написать комментарий – значит ты еще не готов написать код.
Еще одна штука, которая сильно тормозила набор кода – автоматическая подстановка параметров при вызове методов. Т.е. если в текущем контексте есть одна переменна a типа int, и переменная b типа String, и вызывается метод add(int key, string value), то после набора имени add и открытия скобочки IDE само напишет add(a,b). В ряде случаев это именно то, что нужно. Но, как оказалось, далеко не всегда. И когда случаются эти не всегда, то приходится править нагенерированный без моего ведома код. Плохо не столько то, что процесс набора текста программы прерывается. А то, что не всегда эту неправильность сразу замечаешь. Хорошо, что Unit-тесты выявляют такие ошибки.
Еще от набора текста отвлекают возникающие предупреждения (в виде загорающихся красным значков вокруг кода). Иногда они полезны – при опечатках или простых синтаксических ошибках. Иногда они бесполезны – я сам знаю, что еще нет метода с именем addIfNotExists, я напишу его буквально через 10 минут. Но мне уже предлагают определить данный метод.
Но самая главная причина замедления набора кода по бумажке – это мое собственное ожидание подсказок со стороны IDE. Т.е. быстро привыкаешь к тому, что IDE делает автодополнение. И ждешь его. А IDE ничего не делает. Поскольку код написан на бумаге и IDE не в состоянии подсмотреть туда и узнать, что метод addIfNotExists у меня есть. И что можно сделать автодополнение для него. :) Собственно, IDE здесь не причем – это исключительно моя заморочка. Но дело в том, что когда я пользуюсь gVim-ом, таких заморочек у меня нет.
Итого. Я не могу оценить, насколько IDE помогает при работе с большими проектами (например, насколько полезен браузер классов). Я не могу оценить, насколько IDE помогает при работе с какими-нибудь мейнстримовыми фреймворками (вроде автогенерации каких-нибудь описаний для Hibernate или Struts) – не знаю, далек от этого. Но из того, с чем сам столкнулся, я думаю, что тормоза придумали трусы умные IDE и пошаговые отладчики убивают качество программ. Имхо, чем больше программисту приходится делать самому, тем меньше он будет делать (а больше думать – по-идее, должно быть так). Следовательно, тем качественнее будет то, что он делает.
Но, думаю, отговаривать сейчас людей от использования IDE (тем более при программировании на Java) – это как мочиться плевать против ветра. Глобально ничего не изменится, а сам обоссаным оплеванным окажешься :)