Курс: Эффективность Java

Курс: Эффективность Java

Курс: Эффективность Java


Продолжительность курса: 32 ак. ч.

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

Аудитория:
Java-разработчики начального и среднего уровня.

Необходимая подготовка:
• JVA-007 Разработка на платформе Java SE. Базовые темы
• JVA-008 Разработка на платформе Java SE. Расширенные темы

Программа курса:
Модуль 1. Создание и уничтожение объектов
• Выбор статических фабричных методов вместо конструкторов
• Шаблон Builder в случае большого количества параметров конструктора
• Применение семантики шаблона Singleton с приватным конструктором или enum
• Применение приватного конструктора
• Как избежать создания ненужных объектов
• Удаление устаревших ссылок на объекты
• Отказ от использования финализаторов

Модуль 2. Методы, применяемые ко всем объектам
• Выполнение общего контракта при переопределении метода equals
• Обязательное переопределение hashCode при переопределении метода equals
• Обязательное переопределение toString
• Осмысленное переопределение клонов
• Выбор реализации Comparable

Модуль 3. Классы и интерфейсы
• Минимизация доступности классов и компонентов
• Использование методов доступа вместо public полей
• Минимизация изменчивости
• Предпочтение композиции наследованию
• Проектирование с учётом дальнейшего наследования
• Предпочтение интерфейсов абстрактным классам
• Использование только интерфейсов для определения типов
• Используйте иерархии классов вместо "тег-классов"
• Использование объектов-функций для представления стратегий
• Отдавайте предпочтение статическим внутренним классам над не статическими

Модуль 4. Обобщенные типы
• В новом коде всегда используйте generic типы
• Исключение непроверенных предупреждений
• Предпочтение списков массивам
• Предпочтение generic типов
• Предпочтение generic методов
• Использование ограниченных обобщений для повышения гибкости API
• Выбор однородных контейнеров typesafe

Модуль 5. Enums и аннотации
• Использование enums вместо констант int
• Использование полей экземпляра вместо ordinals
• Использование EnumSet вместо битовых полей
• Использование EnumMap вместо порядкового индексирования
• Эмуляция расширяемых enums с интерфейсами
• Предпочтение аннотаций паттернам именования
• Всегда используйте аннотацию Override
• Использование интерфейсов-маркеров для определения типов

Модуль 6. Методы
• Проверка параметров на валидность
• Использование защитного копирования при необходимости
• Тщательное проектирование сигнатур методов
• Осмысленное использование перегрузки
• Осмысленное использование varargs
• Возврат пустых массивов или коллекций, вместо null
• Написание документации для всех public элементов API

Модуль 7. Общее программирование
• Минимизация области видимости локальных переменных
• Предпочтение циклов for-each традиционным циклам for
• Знание и использование библиотек
• Отказ от использования float и double, если требуются точные ответы
• Предпочтение примитивных типов "классам обвёрткам"
• Избегайте строк, где более подходящими являются другие типы
• Учитывайте производительность во время выполнения конкатенации строк
• Ссылки на объекты по их интерфейсам
• Предпочтение интерфейсов к reflection
• Осмысленное использование нативных методов
• Осмысленная оптимизация
• Соблюдение общепринятых норм именования

Модуль 8. Исключения
• Использование исключений только для исключительных условий
• Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования
• Отказ от ненужного использования checked exceptions
• Предпочтительное использование стандартных исключений
• Выброс исключений, соответствующих абстракции
• Документирование всех исключений, выданных каждым методом
• Включение информации о failure-capture в подробные сообщения
• Стремление к атомарности сбоев
• Не допускайте игнорирования исключений

Модуль 9. Параллелизм
• Синхронизация доступа к общим изменяемым данным
• Исключение чрезмерной синхронизации
• Предпочтение использованию Executor-ов
• Предпочтение утилит параллелизма методам wait и notify
• Документирование безопасности потоков
• Осмысленное использование отложенной инициализации
• Независимость от планировщика потоков
• Исключение групп потоков

Модуль 10. Сериализация
• Осмысленная реализация Serializable
• Использование настраиваемой сериализированной формы
• Безопасное написание методов readObject
• Для контроля экземпляров лучше выбрать типы enum вместо readResolve
• Выбор прокси сериализации вместо сериализированных экземпляров

Окончательная цена указывается в договоре на обучение.

Характеристики курса

  • Начало: Ведется набор
  • Вендор: Java
  • Код курса: JV-31
  • Город: Екатеринбург, Пермь, Москва,
  • Направление: Курсы для IT-специалистов
  • Академических часов: 32
  • Количество мест: 8
  • Очно: 66900 ₽
  • Дистанционно: 66900 ₽
Записаться на курс

Курсы повышения квалификации
и профессиональной переподготовки


График работы:
Мы отвечаем на звонки и письма в будние дни с 7:00 до 16:00 по Мск

8 800 (600)-66-16

Владелец сайта:
АНО ДПО «Учебный центр «ШИФТ»
ИНН 5904355180
ОГРН 1175958039586
Юридический адрес: 614010, г. Пермь, ул. Клары Цеткин, д. 14, офис 32.
E-mail: info@eshift.ru