Данный репозиторий создан с целью изучения книги Стильный Java. Код, который работает всегда и везде под авторством Марко Фаэлла.
- Оценка кода с разных точек зрения и в контексте разных целей.
- Внутренние и внешние свойства кода.
- Функциональные и нефункциональные свойства кода.
- Взаимодействия и компромиссы между свойствами кода.
- Стандартные коллекции.
- Создание диаграмм для демонстрации структуры кода.
- Выражение скорости выполнения через O-большое.
- Оценка потребления памяти классом.
- Сравнение скорости выполнения основных структур данных, включая списки, множества и деревья.
- Оценка скорости выполнения в худшем случае и средней скорости выполнения структуры данных в долгосрочной перспективе.
- Концентрация вычислительной нагрузки в конкретном методе класса или ее распределение по всем методам
- Написание классов, эффективных по затратам памяти.
- Сравнение требований к памяти для основных структур данных, включая массивы, списки и множества.
- Оценка компромиссов между скоростью выполнения и потреблением памяти.
- Использование локальности в памяти для ускорения выполнения.
- Написание спецификаций методов в форме контрактов.
- Соблюдение контрактов во время выполнения.
- Использование директив assert.
- Проверка инвариантов классов как упрощенная альтернатива для постусловий.
- Проектирование набора модульных тестов.
- Применение критериев покрытия ввода.
- Оценка покрытия кода.
- Оценка и улучшение тестируемости кода.
- Написание удобочитаемого кода.
- Документирование контрактов с использованием комментариев Javadoc.
- Замена комментариев к реализации самодокументируемым кодом.
- Выявление и предотвращение взаимных блокировок и состояний гонки.
- Использование явных блокировок.
- Синхронизация без блокировок.
- Проектирование неизменяемых классов.
- Расширенное представление программного продукта в более широком контексте.
- Использование обобщений для написания классов, пригодных для повторного использования.
- Использование и модификация изменяемых коллекторов для потоков данных