В книге «Идеальная работа. Программирование без прикрас» легендарный Роберт Мартин (Дядюшка Боб) создал исчерпывающее руководство по хорошей работе для каждого программиста. Роберт Мартин объединяет дисциплины, стандарты и вопросы этики, необходимые для быстрой и продуктивной разработки надежного, эффективного кода, позволяющего испытывать гордость за программное обеспечение, которое вы создаете каждый день.
Роберт Мартин, автор бестселлера «Чистый код», начинает с прагматического руководства по пяти основополагающим дисциплинам создания программного обеспечения: разработка через тестирование, рефакторинг, простой дизайн, совместное программирование и тесты. Затем он переходит к стандартам — обрисовывая ожидания «мира» от разработчиков программного обеспечения, рассказывая, как часто различаются эти подходы, и помогает вам устранить несоответствия. Наконец он обращается к этике программиста, давая десять фундаментальных постулатов, которым должны следовать все разработчики программного обеспечения.
Author(s): Роберт Мартин
Series: Библиотека программиста
Edition: 1
Publisher: Питер
Year: 2022
Language: Russian
Commentary: Vector PDF
Pages: 384
City: СПб.
Tags: Learning; Software Engineering; Ethics; Refactoring; Testing; Productivity; Teamwork; Acceptance Testing; Test-Driven Development; eXtreme Programming; Quality Assessment; YAGNI
Предисловие
Вступление
О термине «мастерство»
Единственный правильный путь
Введение в книгу
Для себя
Для общества
Структура книги
Примечание для руководителей
Благодарности
Об авторе
От издательства
Глава 1. Мастерство
Часть I. Принятые практики
Экстремальное программирование
Жизненный цикл
Разработка через тестирование
Рефакторинг
Простота проектирования
Совместное программирование
Пользовательское тестирование
Глава 2. Разработка через тестирование
Общие сведения
Программное обеспечение
Три правила TDD
Четвертое правило
Основы
Простые примеры
Стек
Простые множители
Игра в боулинг
Резюме
Глава 3. Дополнительные возможности TDD
Сортировка 1
Сортировка 2
Мертвая точка
Настрой, действуй, проверь
Введение в BDD
Конечные автоматы
И снова про BDD
Тестовые двойники
Пустышка
Заглушка
Шпион
Подставной объект
Имитация
Принцип неопределенности TDD
Лондон против Чикаго
Выбор между гибкостью и определенностью
Лондонская школа
Классическая школа, или школа Чикаго
Синтез
Архитектура
Резюме
Глава 4. Разработка тестов
Тестирование баз данных
Тестирование графических интерфейсов
Графический ввод
Шаблоны тестирования
Связанный с тестом подкласс
Самошунтирование
Скромный объект
Проектирование тестов
Проблема хрупких тестов
Однозначное соответствие
Разрыв соответствия
Магазин видеопроката
Конкретика против общности
Определение очередности преобразований
{} → ничто
Ничто → константа
Константа → переменная
Отсутствие условий → выбор
Значение → список
Оператор → рекурсия
Выбор → итерация
Значение → измененное значение
Пример: числа Фибоначчи
Определение очередности преобразований
Резюме
Глава 5. Рефакторинг
Что такое рефакторинг
Основной инструментарий
Переименование
Выделение методов
Выделение переменной
Выделение поля
Кубик Рубика
Практики
Тесты
Быстрые тесты
Устранение взаимно однозначных соответствий
Непрерывный рефакторинг
Безжалостный рефакторинг
Поддержка проходимости тестов!
Оставляйте себе выход
Резюме
Глава 6. Простой дизайн
YAGNI
Тестовое покрытие
Степень покрытия
Асимптотическая цель
Дизайн?
Но это еще не все
Максимальное раскрытие предназначения
Базовая абстракция
Тесты: вторая половина проблемы
Минимизация дублирования
Непреднамеренное дублирование
Минимизация размера
Простой дизайн
Глава 7. Совместное программирование
Глава 8. Приемочное тестирование
Порядок действий
Непрерывная сборка
Часть II. Стандарты
Ваш новый технический директор
Глава 9. Производительность
Мы никогда не будем делать дрянь
Легкая адаптивность
Постоянная готовность
Стабильная производительность
Глава 10. Качество
Постоянное улучшение
Бесстрашная компетентность
Исключительное качество
Мы не будем заваливать работой отдел контроля качества
Болезнь отдела тестирования
Отдел контроля качества ничего не найдет
Автоматизация тестирования
Автоматизированное тестирование и пользовательские интерфейсы
Тестирование пользовательского интерфейса
Глава 11. Смелость
Прикрываем друг другу спину
Честная оценка
Умение говорить «нет»
Непрерывное интенсивное обучение
Наставничество
Часть III. Этика
Самый первый программист
75 лет
Ботаники и Спасители
Образцы для подражания и злодеи
Мы правим миром
Катастрофы
Клятва
Глава 12. Вред
Во-первых, не навреди
Не навреди обществу
Нарушение функционирования
Нарушение структуры
Программное обеспечение
Тесты
Лучшая работа
Делаем это правильно
Что такое хорошая структура
Матрица Эйзенхауэра
Программисты как заинтересованные лица
Делать все возможное
Повторяемое доказательство
Дейкстра
Доказательство правильности
Структурное программирование
Функциональная декомпозиция
Разработка через тестирование
Глава 13. Верность своим принципам
Малые циклы
История управления исходным кодом
Git
Короткие циклы
Непрерывная интеграция
Ветки и переключатели
Непрерывное развертывание
Непрерывная сборка
Неустанное улучшение
Покрытие тестами
Мутационное тестирование
Семантическая стабильность
Очистка
Творения
Поддержание высокой продуктивности
Вязкость
Управление отвлекающими факторами
Управление временем
Глава 14. Работа в команде
Работать как одна команда
Открытый/виртуальный офис
Честная и справедливая оценка
Ложь
Честность, безошибочность, точность
История 1. Проект «Векторизация»
История 2. pCCU
Уроки
Безошибочность
Точность
Обобщение
Честность
Уважение
Никогда не переставай учиться