Учебный центр IBS
JVA-017 Эффективность Java
Улучшаемые навыки:
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
- Выбор прокси сериализации вместо сериализированных экземпляров
Отзывы о курсе
Еще курсы
Бэкенд разработчик269Фулстек разработчик157Веб-разработчик149Фронтенд разработчик144Разработчик игр90Разработчик мобильных приложений65Десктоп разработчик35Архитектор программного обеспечения30Инженер встраиваемых систем25Программист 1С25Разработчик баз данных19HTML-верстальщик9Системный инженер8Архитектор баз данных3
Все курсы в специализации