Роберт Сесил Мартин
Чистый код. Создание, анализ и рефакторинг
Содержание
***
***
***
Предисловие
Введение
***
Благодарности
Глава 1. Чистый код
***
Да будет код
Расплата за хаос
Правило бойскаута
Предыстория и принципы
Заключение
Литература
Глава 2. Содержательные имена
***
Имена должны передавать намерения программиста
Избегайте дезинформации
Используйте осмысленные различия
Используйте удобопроизносимые имена
Выбирайте имена, удобные для поиска
Избегайте схем кодирования имен
Избегайте мысленных преобразований
Имена классов
Имена методов
Избегайте остроумия
Выберите одно слово для каждой концепции
Воздержитесь от каламбуров
Используйте имена из пространства решения
Используйте имена из пространства задачи
Добавьте содержательный контекст
Не добавляйте избыточный контекст
Несколько слов напоследок
Глава 3. Функции
***
Компактность!
Правило одной операции
Один уровень абстракции на функцию
Команды switch
Используйте содержательные имена
Аргументы функций
Избавьтесь от побочных эффектов
Разделение команд и запросов
Используйте исключения вместо возвращения кодов ошибок
Не повторяйтесь
Структурное программирование
Как научиться писать такие функции?
Завершение
Литература
Глава 4. Комментарии
***
Комментарии не компенсируют плохого кода
Объясните свои намерения в коде
Хорошие комментарии
Плохие комментарии
Литература
Глава 5. Форматирование
***
Цель форматирования
Горизонтальное форматирование
Глава 6. Объекты и структуры данных
***
Абстракция данных
Антисимметрия данных/объектов
Закон Деметры
Заключение
Литература
Глава 7. Обработка ошибок
***
Используйте исключения вместо кодов ошибок
Начните с написания команды try-catch-finally
Используйте непроверяемые исключения
Передавайте контекст с исключениями
Определяйте классы исключений в контексте потребностей вызывающей стороны
Определите нормальный путь выполнения
Не возвращайте null
Не передавайте null
Заключение
Литература
Глава 8. Границы
***
Использование стороннего кода
Исследование и анализ границ
Чистые границы
Литература
Глава 9. Модульные тесты
***
Три закона TTD
О чистоте тестов
Чистые тесты
Одна проверка на тест
F.I.R.S.T.
Заключение
Литература
Глава 10. Классы
***
Строение класса
Структурирование с учетом изменений
Литература
Глава 11. Системы
***
Как бы вы строили город?
Отделение конструирования системы от ее использования
Отделение main
Масштабирование
Посредники
АОП-инфраструктуры на «чистом» Java
Аспекты AspectJ
Испытание системной архитектуры
Оптимизация принятия решений
Применяйте стандарты разумно, когда они приносят очевидную пользу
Заключение
Литература
Глава 12. Формирование архитектуры
Четыре правила
Выразительность
Минимум классов и методов
Заключение
Литература
Глава 13. Многопоточность
***
Зачем нужна многопоточность?
Трудности
Защита от ошибок многопоточности
Знайте свою библиотеку
Знайте модели выполнения
Остерегайтесь зависимостей между синхронизированными методами
Синхронизированные секции должны иметь минимальный размер
О трудности корректного завершения
Тестирование многопоточного кода
Заключение
Литература
Глава 14. Последовательное очищение
***
Реализация Args
Как я это сделал?
Args: черновик
Аргументы String
Заключение
Глава 15. Внутреннее строение JUnit
***
Инфраструктура JUnit
Заключение
Глава 16. Переработка SerialDate
***
Прежде всего — заставить работать
…Потом очистить код
Заключение
Литература
Глава 17. Запахи и эвристические правила
***
Комментарии
Рабочая среда
Функции
Разное
Java
Имена
Тесты
Заключение
Литература
Приложение А. Многопоточность II
***
Пример приложения «клиент/сервер»
Знайте свои библиотеки
Зависимости между методами могут нарушить работу многопоточного кода
Повышение производительности
Взаимная блокировка
Тестирование многопоточного кода
Средства тестирования многопоточного кода
Полные примеры кода
Приложение Б. org.jfree.date.SerialDate
Приложение B. Перекрестные ссылки
Эпилог
Чистый код. Создание, анализ и рефакторинг