devby 17 лет! Вспоминаем переходный возраст и делимся виш-листом
Support us

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

1 комментарий
Как писать корректный и прозрачный 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

Читайте также
EPAM анонсировала выкуп акций, рынку понравилось
EPAM анонсировала выкуп акций, рынку понравилось
EPAM анонсировала выкуп акций, рынку понравилось
9 комментариев
EPAM занял 7 место в топе компаний с лучшим менеджментом Glassdoor
EPAM занял 7 место в топе компаний с лучшим менеджментом Glassdoor
EPAM занял 7 место в топе компаний с лучшим менеджментом Glassdoor
2 комментария
Вы помогли Андрею Шубадёрову собрать половину+ суммы на лечение жены от рака. И можете помочь ещё
Вы помогли Андрею Шубадёрову собрать половину+ суммы на лечение жены от рака. И можете помочь ещё
Вы помогли Андрею Шубадёрову собрать половину+ суммы на лечение жены от рака. И можете помочь ещё
12 комментариев
Тестирование — не лёгкий путь войти в ИТ. Почему? Объясняет QA, которая в индустрии с 2009 года
Тестирование — не лёгкий путь войти в ИТ. Почему? Объясняет QA, которая в индустрии с 2009 года
Тестирование — не лёгкий путь войти в ИТ. Почему? Объясняет QA, которая в индустрии с 2009 года
Ещё мечтаете войти в ИТ? Хотите получать много денег и пить кофе, болтая с коллегами? И, конечно, думаете, что это легче всего сделать, став тестировщиком? Устраивайтесь поудобнее — я расскажу всю правду. Ведь я в ИТ и в тестировании с 2009 года и уже многое видела и пережила.
13 комментариев

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

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

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

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

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