Чистый код: создание, анализ и рефакторинг. Библиотека программиста, Мартин Р.

(1 отзыв клиента)

440 грн.

Описание

Чистый код: создание, анализ и рефакторинг. Библиотека программиста, Мартин Р. купить книга Україна

Обкладинка – м”яка

Кількість сторінок – 464

Бумага – біла, офсет

Про книгу Чистый код: создание, анализ и рефакторинг. Библиотека программиста, Мартин Р.

nПлохой код может работать, но он будет мешать развитию проекта и компании-разработчика, требуя дополнительные ресурсы на поддержку и «укрощение».Каким же должен быть код? Эта книга полна реальных примеров, позволяющих взглянуть на код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Вы узнаете много нового о коде. Более того, научитесь отличать хороший код от плохого, узнаете, как писать хороший код и как преобразовать плохой код в хороший.Книга состоит из трех частей. Сначала вы познакомитесь с принципами, паттернами и приемами написания чистого кода. Затем приступите к практическим сценариям с нарастающей сложностью — упражнениям по чистке кода или преобразованию проблемного кода в менее проблемный. И только после этого перейдете к самому важному — концентрированному выражению сути этой книги — набору эвристических правил и «запахов кода». Именно эта база знаний описывает путь мышления в процессе чтения, написания и чистки кода.
n

Чистый код. Создание, анализ и рефакторинг. Библиотека программиста, Роберт Мартин, Мика Мартин оглавление

nПредисловие
n
nВведение
n
nГлава 1 . Чистый код
n
nДа будет код
n
nПлохой код
n
nРасплата за хаос
n
nГрандиозная переработка
n
nОтношение
n
nОсновной парадокс
n
nИскусство чистого кода?
n
nЧто такое «чистый код»?
n
nМы — авторы
n
nПравило бойскаута
n
nПредыстория и принципы
n
nЗаключение
n
nЛитература
n
nГлава 2 . Содержательные имена (Тим Оттингер)
n
nИмена должны передавать намерения программиста
n
nИзбегайте дезинформации
n
nИспользуйте осмысленные различия
n
nИспользуйте удобопроизносимые имена
n
nВыбирайте имена, удобные для поиска
n
nИзбегайте схем кодирования имен
n
nВенгерская запись
n
nПрефиксы членов классов
n
nИнтерфейсы и реализации
n
nИзбегайте мысленных преобразований
n
nИмена классов
n
nИмена методов
n
nИзбегайте остроумия
n
nВыберите одно слово для каждой концепции
n
nВоздержитесь от каламбуров
n
nИспользуйте имена из пространства решения
n
nИспользуйте имена из пространства задачи
n
n6
n
nДобавьте содержательный контекст
n
nНе добавляйте избыточный контекст
n
nНесколько слов напоследок
n
nГлава 3 . Функции
n
nКомпактность!
n
nБлоки и отступы
n
nПравило одной операции
n
nСекции в функциях
n
nОдин уровень абстракции на функцию
n
nЧтение кода сверху вниз: правило понижения
n
nКоманды switch
n
nИспользуйте содержательные имена
n
nАргументы функций
n
nСтандартные унарные формы
n
nАргументы-флаги
n
nБинарные функции
n
nТернарные функции
n
nОбъекты как аргументы
n
nСписки аргументов
n
nГлаголы и ключевые слова
n
nИзбавьтесь от побочных эффектов
n
nВыходные аргументы
n
nРазделение команд и запросов
n
nИспользуйте исключения вместо возвращения кодов ошибок
n
nИзолируйте блоки try/catch
n
nОбработка ошибок как одна операция
n
nМагнит зависимостей Error .java
n
nНе повторяйтесь
n
nСтруктурное программирование
n
nКак научиться писать такие функции?
n
nЗавершение
n
nЛитература
n
nГлава 4 . Комментарии
n
nКомментарии не компенсируют плохого кода
n
nОбъясните свои намерения в коде
n
nХорошие комментарии
n
nЮридические комментарии
n
nИнформативные комментарии
n
nПредставление намерений
n
nПрояснение
n
nПредупреждения о последствиях
n
nКомментарии TODO
n
nУсиление
n
nКомментарии Javadoc в общедоступных API
n
nПлохие комментарии
n
nБормотание
n
nИзбыточные комментарии
n
nНедостоверные комментарии
n
n7Обязательные комментарии
n
nЖурнальные комментарии
n
nШум
n
nОпасный шум
n
nНе используйте комментарии там, где можно использовать функцию
n
nили переменную
n
nПозиционные маркеры
n
nКомментарии за закрывающей фигурной скобкой
n
nСсылки на авторов
n
nЗакомментированный код
n
nКомментарии HTML
n
nНелокальная информация
n
nСлишком много информации
n
nНеочевидные комментарии
n
nЗаголовки функций
n
nЗаголовки Javadoc во внутреннем коде
n
nПример
n
nЛитература
n
nГлава 5 . Форматирование
n
nЦель форматирования
n
nВертикальное форматирование
n
nГазетная метафора
n
nВертикальное разделение концепций
n
nВертикальное сжатие
n
nВертикальные расстояния
n
nВертикальное упорядочение
n
nГоризонтальное форматирование
n
nГоризонтальное разделение и сжатие
n
nГоризонтальное выравнивание
n
nОтступы
n
nВырожденные области видимости
n
nПравила форматирования в группах
n
nПравила форматирования от дядюшки Боба
n
nГлава 6 . Объекты и структуры данных
n
nАбстракция данных
n
nАнтисимметрия данных/объектов
n
nЗакон Деметры
n
nКрушение поезда
n
nГибриды
n
nСкрытие структуры
n
nОбъекты передачи данных
n
nАктивные записи
n
nЗаключение
n
nЛитература
n
nГлава 7 . Обработка ошибок (Майк Физерс)
n
nИспользуйте исключения вместо кодов ошибок
n
nНачните с написания команды try-catch-finally
n
n8
n
nИспользуйте непроверяемые исключения
n
nПередавайте контекст с исключениями
n
nОпределяйте классы исключений в контексте потребностей
n
nвызывающей стороны
n
nОпределите нормальный путь выполнения
n
nНе возвращайте null
n
nНе передавайте null
n
nЗаключение
n
nЛитература
n
nГлава 8 . Границы (Джеймс Гренинг)
n
nИспользование стороннего кода
n
nИсследование и анализ границ
n
nИзучение log4j
n
nУчебные тесты: выгоднее, чем бесплатно
n
nИспользование несуществующего кода
n
nЧистые границы
n
nЛитература
n
nГлава 9 . Модульные тесты
n
nТри закона TTD
n
nО чистоте тестов
n
nТесты как средство обеспечения изменений
n
nЧистые тесты
n
nПредметно-ориентированный язык тестирования
n
nДвойной стандарт
n
nОдна проверка на тест
n
nОдна концепция на тест
n
nF .I .R .S .T
n
nЗаключение
n
nЛитература
n
nГлава 10 . Классы (совместно с Джеффом Лангром)
n
nСтроение класса
n
nИнкапсуляция
n
nКлассы должны быть компактными!
n
nПринцип единой ответственности (SRP)
n
nСвязность
n
nПоддержание связности приводит к уменьшению классов
n
nСтруктурирование с учетом изменений
n
nИзоляция изменений
n
nЛитература
n
nГлава 11 . Системы (Кевин Дин Уомплер)
n
nКак бы вы строили город?
n
nОтделение конструирования системы от ее использования
n
nОтделение main
n
nФабрики
n
nВнедрение зависимостей
n
n9Масштабирование
n
nПоперечные области ответственности
n
nПосредники
n
nАОП-инфраструктуры на «чистом» Java
n
nАспекты AspectJ
n
nИспытание системной архитектуры
n
nОптимизация принятия решений
n
nПрименяйте стандарты разумно, когда они приносят очевидную пользу
n
nСистемам необходимы предметно-ориентированные языки
n
nЗаключение
n
nЛитература
n
nГлава 12 . Формирование архитектуры
n
nЧетыре правила
n
nПравило № 1: выполнение всех тестов
n
nПравила № 2–4: переработка кода
n
nОтсутствие дублирования
n
nВыразительность
n
nМинимум классов и методов
n
nЗаключение
n
nЛитература
n
nГлава 13 . Многопоточность (Бретт Л. Шухерт)
n
nЗачем нужна многопоточность?
n
nМифы и неверные представления
n
nТрудности
n
nЗащита от ошибок многопоточности
n
nПринцип единой ответственности
n
nСледствие: ограничивайте область видимости данных
n
nСледствие: используйте копии данных
n
nСледствие: потоки должны быть как можно более независимы
n
nЗнайте свою библиотеку
n
nПотоково-безопасные коллекции
n
nЗнайте модели выполнения
n
nМодель «производители-потребители»
n
nМодель «читатели-писатели»
n
nМодель «обедающих философов»
n
nОстерегайтесь зависимостей между синхронизированными методами
n
nСинхронизированные секции должны иметь минимальный размер
n
nО трудности корректного завершения
n
nТестирование многопоточного кода
n
nРассматривайте непериодические сбои как признаки возможных проблем
n
nмногопоточности
n
nНачните с отладки основного кода, не связанного с многопоточностью
n
nРеализуйте переключение конфигураций многопоточного кода
n
nОбеспечьте логическую изоляцию конфигураций многопоточного кода
n
nПротестируйте программу с количеством потоков, превышающим
n
nколичество процессоров
n
nПротестируйте программу на разных платформах
n
n10
n
nПрименяйте инструментовку кода для повышения вероятности сбоев
n
nРучная инструментовка
n
nАвтоматизированная инструментовка
n
nЗаключение
n
nБиблиография
n
nГлава 14 . Последовательное очищение
n
nРеализация Args
n
nКак я это сделал?
n
nArgs: черновик
n
nНа этом я остановился
n
nО постепенном усовершенствовании
n
nАргументы String
n
nЗаключение
n
nГлава 15 . Внутреннее строение JUnit
n
nИнфраструктура JUnit
n
nЗаключение
n
nГлава 16 . Переработка SerialDate
n
nПрежде всего — заставить работать
n
n…Потом очистить код
n
nЗаключение
n
nБиблиография
n
nГлава 17 . Запахи и эвристические правила
n
nКомментарии
n
nC1: Неуместная информация
n
nC2: Устаревший комментарий
n
nC3: Избыточный комментарий
n
nC4: Плохо написанный комментарий
n
nC5: Закомментированный код
n
nРабочая среда
n
nE1: Построение состоит из нескольких этапов
n
nE2: Тестирование состоит из нескольких этапов
n
nФункции
n
nF1: Слишком много аргументов
n
nF2: Выходные аргументы
n
nF3: Флаги в аргументах
n
nF4: Мертвые функции
n
nРазное
n
nG1: Несколько языков в одном исходном файле
n
nG2: Очевидное поведение не реализовано
n
nG3: Некорректное граничное поведение
n
nG4: Отключенные средства безопасности
n
nG5: Дублирование
n
nG6: Код на неверном уровне абстракции
n
nG7: Базовые классы, зависящие от производных
n
n11G8: Слишком много информации
n
nG9: Мертвый код
n
nG10: Вертикальное разделение
n
nG11: Непоследовательность
n
nG12: Балласт
n
nG13: Искусственные привязки
n
nG14: Функциональная зависть
n
nG15: Аргументы-селекторы
n
nG16: Непонятные намерения
n
nG17: Неверное размещение
n
nG18: Неуместные статические методы
n
nG19: Используйте пояснительные переменные
n
nG20: Имена функций должны описывать выполняемую операцию
n
nG21: Понимание алгоритма
n
nG22: Преобразование логических зависимостей в физические
n
nG23: Используйте полиморфизм вместо if/Else или switch/Case
n
nG24: Соблюдайте стандартные конвенции
n
nG25: Заменяйте «волшебные числа» именованными константами
n
nG26: Будьте точны
n
nG27: Структура важнее конвенций
n
nG28: Инкапсулируйте условные конструкции
n
nG29: Избегайте отрицательных условий
n
nG30: Функции должны выполнять одну операцию
n
nG31: Скрытые временн*ые привязки
n
nG32: Структура кода должна быть обоснована
n
nG33: Инкапсулируйте граничные условия
n
nG34: Функции должны быть написаны на одном уровне абстракции
n
nG35: Храните конфигурационные данные на высоких уровнях
n
nG36: Избегайте транзитивных обращений
n
nJava
n
nJ1: Используйте обобщенные директивы импорта
n
nJ2: Не наследуйте от констант
n
nJ3: Константы против перечислений
n
nИмена
n

1: Используйте содержательные имена
n

2: Выбирайте имена на подходящем уровне абстракции
n

3: По возможности используйте стандартную номенклатуру
n

4: Недвусмысленные имена
n

5: Используйте длинные имена для длинных областей видимости
n

6: Избегайте кодирования
n

7: Имена должны описывать побочные эффекты
n
nТесты
n
nT1: Нехватка тестов
n
nT2: Используйте средства анализа покрытия кода
n
nT3: Не пропускайте тривиальные тесты
n
nT4: Отключенный тест как вопрос
n
nT5: Тестируйте граничные условия
n
nT6: Тщательно тестируйте код рядом с ошибками
n
n12
n
nT7: Закономерности сбоев часто несут полезную информацию
n
nT8: Закономерности покрытия кода часто несут полезную информацию
n
nT9: Тесты должны работать быстро
n
nЗаключение
n
nБиблиография
n
nПриложение А . Многопоточность II
n
nПример приложения «клиент/сервер»
n
nЗнайте свои библиотеки
n
nЗависимости между методами могут нарушить работу многопоточного кода
n
nПовышение производительности
n
nВзаимная блокировка
n
nТестирование многопоточного кода
n
nСредства тестирования многопоточного кода
n
nПолные примеры кода
n
nПриложение Б . org .jfree .date .SerialDate
n
nПриложение В . Перекрестные ссылки
n
nЭпилог
n
nАлфавитный указатель
n

Також ви можете залишити питанная або відгук про книгу: Чистый код: создание, анализ и рефакторинг. Библиотека программиста, Мартин Р.

1 отзыв на Чистый код: создание, анализ и рефакторинг. Библиотека программиста, Мартин Р.

  1. Анатолий

    Это была моя самая первая книга на IT тематику, которую я прочёл, её пользу трудно переоценить. Вот сейчас решил перечитать в бумажном варианте.

Добавить отзыв

Ваш адрес email не будет опубликован. Обязательные поля помечены *