Support us

Как писать корректный и прозрачный Java-код для людей

Оставить комментарий
Как писать корректный и прозрачный Java-код для людей

Две недели назад вышла третья книга о Java от авторов Игоря Блинова и Валерия Романчика «Java.Методы программирования» на 896-и страницах. Первую книгу («Java2. Практическое руководство») выпустили в 2005 году, вторую («Java. Промышленное программирование») – в 2007, и эта серия стала пропуском в профессию, без особого преувеличения, для тысяч студентов.

Один из составителей Игорь Блинов, доцент кафедры веб-технологий и компьютерного моделирования ММФ БГУ и тренер RD EPAM, рассказал о новом издании и об особенностях Java-программирования.

Читать дальше

– Новая книга включает курс Core Java, курс по избранным enterprise технологиям, курс по design patterns, а также в приложениях даны краткие описания необходимых библиотек и технологий, которых нет на курсах EPAM, но необходимых при дальнейшей работе и обучении в нашей лаборатории.

В главах, посвященных дизайн паттернам, предпринята попытка приблизить примеры к современным тенденциям архитектурного построения приложений. С другой стороны, удачна эта попытка или неудачна, судить читателям, но овладение этими знаниями расширяет объемное видение кода в любом случае. Программист лучше представляет связи и взаимодействия. В то же время – это не панацея, и иногда дизайн паттерны бывают просто вредны.

В учебнике все примеры рабочие, их можно «запустить» и проверить.

Кстати говоря, большинство существующих книг по Java нельзя отнести к учебникам – это скорее справочники, в которых можно узнать функциональность конкретного класса или метода. Однако, как правило, упускается из вида непосредственно процесс построения взаимодействий классов и слоев приложения.

В моих книгах новый материал появляется только тогда, когда становится понятным, как этому научить студентов.
В частности, в издании традиционно есть задания к каждой главе, есть тестовые вопросы с ответами и указаниями. Даны примеры промежуточных контрольных работ, от которых уже «пострадали» на экзаменах и зачетах студенты мехмата БГУ.

При подготовке примеров для книг я ориентируюсь на слушателей: если читаю лекцию и вижу, что они в каком-то месте перестают понимать, перерабатываю код приложений.

простые примеры для учебника писать сложнее, чем обычный работающий код

Как ни странно, простые примеры для учебника писать сложнее, чем обычный работающий код. Ведь компьютер «съест» все, а вот код для людей должен быть простым и понятным. Вот напишет кто-то где-то какой-то код, у него все вроде заработало, и он делится своей безмерной радостью на форумах. На самом деле в интернете находится 90 процентов профнепригодного кода. Поэтому хочу всех предостеречь от использования первого попавшегося (загугленного) решения своей проблемы. Рекомендую обратить внимание на такой сайт: http://java2s.com. Он хорош с точки зрения базовых демонстрационных примеров, не погружающихся в суть, но демонстрирующих формальную функциональность. Примеры разложены по темам. Программировать на них не научишься, но как вспомогательное средство – вполне адекватно.

в интернете находится 90 процентов профнепригодного кода

Наша основная задача в процессе обучения – привить культуру программирования: когда код, написанный одним человеком, легко понимает другой. Некоторые проекты длятся годами, и поэтому важно, чтобы новичок мог быстро включиться в процесс, а для этого весь код должен быть написан просто и единообразно, что на практике встречается достаточно редко, к сожалению.

Существуют проекты, которые созданы и работают еще с 70-х годов прошлого века. Поскольку новый код стоит огромных денег, компании заинтересованы не покупать его, а модернизировать ранее разработанный. Поэтому те мегабайты кода в настоящее время адаптируются под современные требования, расширяются современными интерфейсами, технологиями.  Для этого программистам приходится разбираться с кодом, появившимся десятки лет назад, интегрировать новое в старое, не забывая о качестве и эффективности.

Это значит, что еще через какое-то время кто-то будет актуализировать код, созданный нынешними программистами. Поэтому программист должен разрабатывать код, зная, что его будет читать «маньяк-убийца со швейцарским штык-ножом, знающий его точный домашний адрес».

В качестве отвратительного примера можно привести веб-приложение, состоящее из одного сервлета, которое работает и, возможно, достаточно стабильно. Вот только разобраться с этим будет практически невозможно! В качестве ненавязчивого чтения на эту тему рекомендую почитать «Горький вкус Java» Брюса Тейта.

Могу привести пример расчетной программы собственной диссертации. Пусть это была эпоха процедурного программирования. Пусть это было создано на Fortran-77. У меня сохранилась длинная распечатка кода той самой программы, которая решает систему нелинейных уравнений в частых производных. Как-то наткнулся и развернул распечатку на всю длину комнаты, оценил. В целом знаю, что происходит, чувствую свою руку, но стоит присмотреться к фрагментам – с трудом понимаю смысл объявления некоторых переменных, и за что они отвечают…  Как видите, порой даже сам автор не может разобраться в коде. Поэтому нужно стремиться к тому, чтобы все приложение было структурировано, по слоям, модулям – тогда коллеги и последователи скорее разберутся хотя бы в общей структуре.

Надо сказать, что язык Java задумывался как очень простой (изначально было всего около 200 классов), а к седьмой версии их стало уже около 7 000! И чтобы писать на Java грамотно, нужно знать достаточно много, но все знать, пожалуй, нереально. С выходом Java 8 в будущем году и внедрением множественного наследования и лямбда-выражений язык станет еще более непростым. Это все ралли с C#. А языку Java не хватает осмысленной реализации аспектно-ориентированного подхода, что упростило бы разработку. Spring не в счет. У IBM есть интересное решение: AspectJ, но оно пока не получило широкого распространения, так как потребовало бы введения целого ряда новых ключевых слов, и некоторые другие нюансы мешают. Да и базовые типы данных в конце концов следовало бы просто выбросить, так как их существование нарушает принципы ООП.

Наша основная задача в процессе обучения – привить культуру программирования: когда код, написанный одним человеком, легко понимает другой.

Это все лирика и фантазии, но изучение программирования становится делом достаточно сложным, и без преподавателя обойтись реально проблематично. «Минус ко всему», когда человек сам изучает Java при всей ее широте и многообразии, он ведь не знает, что именно понадобится его работодателю. Зачастую оказывается так, что какие-то знания оказываются неактуальными, а каких-то, напротив, не хватает.

В нашей компании мы стремимся изучать новые технологии раньше, чем они появятся в производстве: этот процесс, как правило, запаздывает и дает время на осознание вновь объявившегося «чуда».

Рекомендую регулярно читать форумы производителей и сообществ разработчиков, следить за тенденциями и «модой». Программист – специальность, требующая постоянного развития. В свете появления различных мобильных платформ с тачскриновыми экранами большая часть программного обеспечения (профессионального, офисного, таймкиллинга и прочего) будет дублироваться на эти платформы.

Информатизация общества и самой жизни позволяет не без оснований предположить, что потребность в программистах будет возрастать. Поэтому у молодых людей есть реальный шанс приступить к созданию своего будущего уже сейчас. Учитесь сами, а если что, приходите, поможем! Не с пустыми руками (головой), а хотя бы с проработанным Брюсом Эккелем, даже не целиком, а хотя бы с его половиной.

Через некоторое время PDF-версии отдельных глав, а впоследствии и вся книга появятся по адресу http://book.epam.by

16 лет dev.by — «дефолтный» источник информации о беларусском ИТ

Вы можете...

Читайте также
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
12 онлайн-курсов по языку Java для новичков и профессионалов (август, 2023)
Java по-прежнему входит в список самых популярных языков программирования. Вместе с Digitaldefynd мы составили список курсов по Java, которые подойдут как новичкам, так и людям с опытом программирования, чтобы освоить этот востребованный язык.
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
Microsoft запустила обучающий сайт по Java
1 комментарий
Компании с беларусскими корнями заплатили в Литве €25 млн налогов в I полугодии. Половина - из ИТ
Компании с беларусскими корнями заплатили в Литве €25 млн налогов в I полугодии. Половина - из ИТ
Компании с беларусскими корнями заплатили в Литве €25 млн налогов в I полугодии. Половина - из ИТ
3 комментария
EPAM продолжит работу в Беларуси. Отчёт для комиссии по ценным бумагам США
EPAM продолжит работу в Беларуси. Отчёт для комиссии по ценным бумагам США
EPAM продолжит работу в Беларуси. Отчёт для комиссии по ценным бумагам США
25 комментариев

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.