Учебный центр IBS

JVA-017 Эффективность Java

Для кого: Бэкенд разработчикМидл Мидл
Начало: По факту набора потока
Длительность: 1 неделя
Улучшаемые навыки:
Java
СертификатОнлайн

Описание курса

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

Модуль 1

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

Модуль 2

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

Модуль 3

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

Модуль 4

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

Модуль 5

  • Использование 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
  • Выбор прокси сериализации вместо сериализированных экземпляров

Отзывы о курсе

Отзывов пока нет
Будьте первым, напишите отзыв и поставьте оценку этому курсу.

Еще курсы