Эффективность Java
Эффективность Java
Повышение квалификации
30 ак.ч.
онлайн
удостоверение о повышении квалификации государственного образца
Подробнее о курсе
Документ после выпуска
удостоверение о повышении квалификации государственного образца
Программа курса
1. Создание и уничтожение объектов [Теория 2 ч.; Практика 2 ч.]
Выбор статических фабричных методов вместо конструкторов Шаблон Builder в случае большого количества параметров конструктора Применение семантики шаблона Singleton с приватным конструктором или enum Применение приватного конструктора Как избежать создания ненужных объектов Удаление устаревших ссылок на объекты Отказ от использования финализаторов
2. Методы, применяемые ко всем объектам [Теория 1ч.; Практика 1 ч.]
Выполнение общего контракта при переопределении метода equals Обязательное переопределение hashCode при переопределении метода equals Обязательное переопределение toString Осмысленное переопределение клонов Выбор реализации Comparable
3. Классы и интерфейсы [Теория 2 ч.; Практика 2 ч.]
Минимизация доступности классов и компонентов Использование методов доступа вместо public полей Минимизация изменчивости Предпочтение композиции наследованию Проектирование с учётом дальнейшего наследования Предпочтение интерфейсов абстрактным классам Использование только интерфейсов для определения типов Используйте иерархии классов вместо "тег-классов" Использование объектов-функций для представления стратегий Отдавайте предпочтение статическим внутренним классам над не статическими
4. Обобщенные типы [Теория 1 ч.; Практика 2 ч.]
В новом коде всегда используйте generic типы Исключение непроверенных предупреждений Предпочтение списков массивам Предпочтение generic типов Предпочтение generic методов Использование ограниченных обобщений для повышения гибкости API Выбор однородных контейнеров typesafe
5. Enums и аннотации [Теория 1 ч.; Практика 2 ч.]
Использование enums вместо констант int Использование полей экземпляра вместо ordinals Использование EnumSet вместо битовых полей Использование EnumMap вместо порядкового индексирования Эмуляция расширяемых enums с интерфейсами Предпочтение аннотаций паттернам именования Всегда используйте аннотацию Override Использование интерфейсов-маркеров для определения типов
6. Методы [Теория 1 ч.; Практика 2 ч.]
Проверка параметров на валидность Использование защитного копирования при необходимости Тщательное проектирование сигнатур методов Осмысленное использование перегрузки Осмысленное использование varargs Возврат пустых массивов или коллекций, вместо null Написание документации для всех public элементов API
7. Общее программирование [Теория 2 ч.; Практика 2 ч.]
Минимизация области видимости локальных переменных Предпочтение циклов for-each традиционным циклам for Знание и использование библиотек Отказ от использования float и double, если требуются точные ответы Предпочтение примитивных типов "классам обвёрткам" Избегайте строк, где более подходящими являются другие типы Учитывайте производительность во время выполнения конкатенации строк Ссылки на объекты по их интерфейсам Предпочтение интерфейсов к reflection Осмысленное использование нативных методов Осмысленная оптимизация Соблюдение общепринятых норм именования
8. Исключения [Теория 1 ч.; Практика 2 ч.]
Использование исключений только для исключительных условий Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования Отказ от ненужного использования checked exceptions Предпочтительное использование стандартных исключений Выброс исключений соответствующих абстракции Документирование всех исключений, выданных каждым методом Включение информации о failure-capture в подробные сообщения Стремление к атомарности сбоев Не допускайте игнорирования исключений
9. Параллелизм [Теория 1 ч.; Практика 1 ч.]
Синхронизация доступа к общим изменяемым данным Исключение чрезмерной синхронизации Предпочтение использованию Executor-ов Предпочтение утилит параллелизма методам wait и notify Документирование безопасности потоков Осмысленное использование отложенной инициализации Независимость от планировщика потоков Исключение групп потоков
10. Сериализация [Теория 1 ч.; Практика 1 ч.]
Осмысленная реализация Serializable Использование настраиваемой сериализированной формы Безопасное написание методов readObject Для контроля экземпляров лучше выбрать типы enum вместо readResolve Выбор прокси сериализации вместо сериализированных экземпляров
Итого на курс 30 часов: теория – 13 ч (43%), практика – 17 ч (56%)
Предварительные требования
JVA-007 Разработка на платформе Java SE. Базовые темы
JVA-008 Разработка на платформе Java SE. Расширенные темы
Оставьте отзыв
Похожие курсы
Бесплатные курсы
Оставьте заявку
Наши консультанты ответят на все вопросы
И помогут в выборе
Нажимая кнопку, вы даете согласие на обработку персональных данных