Educational resources of the Internet - Informatics.

 Образовательные ресурсы Интернета - Информатика.

        Главная страница (Содержание)

   

.

Чистый код. Мартин Р.

СПб.: 2019. — 464 с.

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

 

 

Формат: pdf     

Размер:  6,1 Мб

Смотреть, скачать:  google.drive 

 

 

 

Оригинал на английском языке:   Modern JavaScript for the Impatient. Horstmann C.S. (2020, 343p.)

 

 

 

Содержание
Предисловие 14
Введение 20
Глава 1. Чистый код 23
Да будет код 24
Плохой код 25
Расплата за хаос 26
Грандиозная переработка 26
Отношение 27
Основной парадокс 28
Искусство чистого кода? 28
Что такое «чистый код»? 29
Мы — авторы 36
Правило бойскаута 37
Предыстория и принципы 37
Заключение 38
Литература 38
Глава 2. Содержательные имена (Тим Оттингер) 39
Имена должны передавать намерения программиста 40
Избегайте дезинформации 41
Используйте осмысленные различия 42
Используйте удобопроизносимые имена 44
Выбирайте имена, удобные для поиска 45
Избегайте схем кодирования имен 45
Венгерская запись 46
Префиксы членов классов 46
Интерфейсы и реализации 47
Избегайте мысленных преобразований 47
Имена классов 48
Имена методов 48
Избегайте остроумия 48
Выберите одно слово для каждой концепции 49
Воздержитесь от каламбуров 49
Используйте имена из пространства решения 50
Используйте имена из пространства задачи 50
Добавьте содержательный контекст 51
Не добавляйте избыточный контекст 53
Несколько слов напоследок 53
Глава 3. Функции 55
Компактность! 58
Блоки и отступы 59
Правило одной операции 59
Секции в функциях 60
Один уровень абстракции на функцию 61
Чтение кода сверху вниз: правило понижения 61
Команды switch 62
Используйте содержательные имена 64
Аргументы функций 64
Стандартные унарные формы 65
Аргументы-флаги 66
Бинарные функции 66
Тернарные функции 67
Объекты как аргументы 68
Списки аргументов 68
Глаголы и ключевые слова 68
Избавьтесь от побочных эффектов 69
Выходные аргументы 70
Разделение команд и запросов 70
Используйте исключения вместо возвращения кодов ошибок 71
Изолируйте блоки try/catch 72
Обработка ошибок как одна операция 72
Магнит зависимостей Error.java 73
Не повторяйтесь 73
Структурное программирование 74
Как научиться писать такие функции? 74
Завершение 75
Литература 78
Глава 4. Комментарии 79
Комментарии не компенсируют плохого кода 81
Объясните свои намерения в коде 81
Хорошие комментарии 81
Юридические комментарии 82
Информативные комментарии 82
Представление намерений 82
Прояснение 83
Предупреждения о последствиях 84
Комментарии TODO 85
Усиление 85
Комментарии Javadoc в общедоступных API 86
Плохие комментарии 86
Бормотание 86
Избыточные комментарии 87
Недостоверные комментарии 89
Обязательные комментарии 90
Журнальные комментарии 90
Шум 91
Опасный шум 93
Не используйте комментарии там, где можно использовать функцию или переменную 93
Позиционные маркеры 94
Комментарии за закрывающей фигурной скобкой 94
Ссылки на авторов 95
Закомментированный код 95
Комментарии HTML 96
Нелокальная информация 96
Слишком много информации 97
Неочевидные комментарии 97
Заголовки функций 97
Заголовки Javadoc во внутреннем коде 98
Пример 98
Литература 101
Глава 5. Форматирование 102
Цель форматирования 103
Вертикальное форматирование 103
Газетная метафора 104
Вертикальное разделение концепций 105
Вертикальное сжатие 106
Вертикальные расстояния 107
Вертикальное упорядочение 112
Горизонтальное форматирование 112
Горизонтальное разделение и сжатие 113
Горизонтальное выравнивание 114
Отступы 116
Вырожденные области видимости 117
Правила форматирования в группах 118
Правила форматирования от дядюшки Боба 118
Глава 6. Объекты и структуры данных 121
Абстракция данных 121
Антисимметрия данных/объектов 123
Закон Деметры 126
Крушение поезда 126
Гибриды 127
Скрытие структуры 127
Объекты передачи данных 128
Активные записи 129
Заключение 130
Литература 130
Глава 7. Обработка ошибок (Майк Физерс) 131
Используйте исключения вместо кодов ошибок 132
Начните с написания команды try-catch-finally 133
Используйте непроверяемые исключения 135
Передавайте контекст с исключениями 136
Определяйте классы исключений в контексте потребностей
вызывающей стороны 136
Определите нормальный путь выполнения 138
Не возвращайте null 139
Не передавайте null 140
Заключение 141
Литература 141
Глава 8. Границы (Джеймс Тренинг) 142
Использование стороннего кода 143
Исследование и анализ границ 145
Изучение log4j 145
Учебные тесты: выгоднее, чем бесплатно 147
Использование несуществующего кода 148
Чистые границы 149
Литература 149
Глава 9. Модульные тесты 150
Три закона TTD 151
О чистоте тестов 152
Тесты как средство обеспечения изменений 153
Чистые тесты 154
Предметно-ориентированный язык тестирования 157
Двойной стандарт 157
Одна проверка на тест 159
Одна концепция на тест 161
EI.R.S.T 162
Заключение 163
Литература 163
Глава 10. Классы (совместно с Джеффом Лангром) 164
Строение класса 164
Инкапсуляция 165
Классы должны быть компактными! 165
Принцип единой ответственности (SRP) 167
Связность 169
Поддержание связности приводит к уменьшению классов 170
Структурирование с учетом изменений 176
Изоляция изменений 179
Литература 180
Глава 11. Системы (Кевин Дин Уомплер) 181
Как бы вы строили город? 182
Отделение конструирования системы от ее использования 182
Отделение main 184
Фабрики 184
Внедрение зависимостей 185
Масштабирование 186
Поперечные области ответственности 189
Посредники 190
АОП-инфраструктуры на «чистом» Java 192
Аспекты AspectJ 195
Испытание системной архитектуры 196
Оптимизация принятия решений 197
Применяйте стандарты разумно, когда они приносят очевидную пользу 197
Системам необходимы предметно-ориентированные языки 198
Заключение 199
Литература 199
Глава 12. Формирование архитектуры 200
Четыре правила 200
Правило № 1: выполнение всех тестов 201
Правила № 2-4: переработка кода 201
Отсутствие дублирования 202
Выразительность 204
Минимум классов и методов 206
Заключение 206
Литература 206
Глава 13. Многопоточность (Бретт Л. Шухерт) 207
Глава 14. Последовательное очищение 225
Реализация Args 226
Как я это сделал? 233
Args: черновик 233
На этом я остановился 245
О постепенном усовершенствовании 246
Аргументы String 248
Заключение 286
Глава 15. Внутреннее строение JUnit 287
Инфраструктура J Unit 288
Заключение 302
Глава 16. Переработка SerialDate 303
Прежде всего — заставить работать 304
...Потом очистить код 306
Заключение 320
Литература 321
Глава 17. Запахи и эвристические правила 322
Приложение А. Многопоточность II 357
Пример приложения «клиент/сервер» 357
Знайте свои библиотеки 367
Зависимости между методами могут нарушить работу многопоточного кода 370
Повышение производительности 375
Взаимная блокировка 377
Тестирование многопоточного кода 381
Средства тестирования многопоточного кода 384
Полные примеры кода 385
Приложение Б. org.jfree.date.SerialDate 390
Приложение В. Перекрестные ссылки 455
Эпилог 458
Алфавитный указатель 459
 


О том, как читать книги в форматах pdf, djvu - см. раздел "Программы; архиваторы; форматы pdf, djvu и др."


 

 

 

 

Астрономия

Биология

География

Естествознание

Иностр. языки.

Информатика:

1. Начальная школа
2. Средняя школа
3. ОГЭ - информатика
4. ЕГЭ - информатика
5. Высшая школа

Искусствоведение

История

Культурология

Литература

Математика

Менеджмент

ОБЖ

Обществознание

Психология

Религиоведение

Русский язык

Физика

Философия 

Химия

Экология

Экономика

Юриспруденция

Школа - и др.

Студентам - и др.

Экзамены школа

Абитуриентам

Библиотеки 

Справочники

Рефераты

Прочее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Copyright  © 2006-200 Alexander Vasiliev , St. Petersburg,   Russia,   admin@alleng.org  , alleng@yandex.ru