Читаемый код, или Программирование как искусство

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Любому программисту доводилось видеть код, который настолько неаккуратен и так пестрит ошибками, что от его чтения начинает болеть голова. За пять лет авторы этой книги проанализировали сотни примеров "плохого" кода (в основном - собственного), пытаясь определить, чем плох тот или иной код и как его можно улучшить. К какому выводу они пришли? Необходимо писать такой код, который читатель сможет понять максимально быстро, причем, даже если этот читатель - сам создатель этого кода.В данной книге рассматриваются базовые принципы и практические методы, которые можно применять всякий раз при написании кода. В каждой главе на примере несложных образцов кода, написанного на разных языках программирования, изучается отдельный аспект создания кода и демонстрируется, как сделать код простым для понимания.

Author(s): Босуэлл Д., Фаучер Т.
Publisher: Питер
Year: 2012

Language: Russian
Commentary: обрезал поля
Pages: 193

Краткое содержание

Предисловие 13
Об авторах 17
От издательства 18

Глава 1. Код должен быть простым для понимания 19

ЧастьI. Поверхностные улучшения
Глава 2. Помещаем в имена полезную информацию 25
Глава 3. Имена,которые нельзя понять неправильно 41
Глава 4. Эстетичность 51
Глава 5. Комментируем мудро 63
Глава 6.Комментарии должны быть четкими и компактными 77

ЧастьII. Упрощение цикла и логики
Глава 7. Как сделать поток команд управления удобочитаемым 87
Глава 8. Разбиваем длинные выражения 101
Глава 9. Переменные и читаемость 111

ЧастьIII. Реорганизация кода
Глава 10. Выделяем побочные подзадачи 127
Глава 11. Одна задача в любой момент времени 139
Глава 12. Превращаем мысли в код 151
Глава 13. Пишите меньше кода 161

Часть IV. Избранные темы
Глава 14. Тестирование и читаемость 171
Глава 15. Разработка и реализация счетчика минут и часов . . . 187

Оглавление

Предисловие 13
О чем эта книга 14
Как читать эту книгу: 15
Использование примеров кода 15
Как с нами связаться 15
Благодарности 16
Об авторах 17
От издательства 18
Глава 1. Код должен быть простым для понимания 19
Что делает код «лучше»? 20
Фундаментальная теорема читаемости 21
Меньше — значит лучше? 21
Противоречит ли время-для-понимания другим целям? 22
Самое сложное 22

ЧастьI. Поверхностные улучшения

Глава 2. Помещаем в имена полезную информацию 25
Выбираем конкретные слова 26
Избегаем общих имен, например таких, как tmp и retval 28
Используйте конкретные имена вместо абстрактных 31
Добавление дополнительной информации к имени v 33
Насколько длинным должно быть имя? 36
Использование форматирования имен для передачи их смысла 38
Итог 40

Глава 3. Имена, которые нельзя понять неправильно 41
Пример: Filter() (фильтрация) 42
Пример: Clip(text, lenght) (обрезать) 42
Применяйте префиксы min и max для (включающих) границ 43
Используйте в именах границ слова first и last 44
Используйте имена begin и end для включающе-исключающих границ . . . 44
Называем булевы переменные 45
Оправдываем ожидания пользователей 45
Пример: оценка нескольких вариантов названия 47
Итог . . . 49

Глава 4. Эстетичность 51
Почему красота имеет значение? 52
Перераспределение разрывов строк сделает код
более последовательным и компактным 53
Избавляемся от неоднородности с помощью методов 55
Выравнивание столбцов 57
Выберите определенный порядок и придерживайтесь его 58
Объединяем объявления в блоки 58
Разбиваем код на абзацы 59
Персональный стиль или единообразие? 61
Итог 62

Глава 5. Комментируем мудро 63
Что НЕ нужно комментировать 64
Записываем ваши мысли 67
Поставьте себя на место читателя 69
Преодоление «творческого кризиса» 74
Итог 75

Глава 6. Комментарии должны быть четкими и компактными 77
Старайтесь комментировать компактно 78
Избегайте двусмысленных местоимений и указательных слов 78
«Полируем» нечеткие предложения 79
Четко описываем поведение функции 79
Используйте примеры ввода/вывода,
иллюстрирующие спорные ситуации 80
Описывайте цели вашего кода 81
Комментарии, содержащие названия параметров функций 82
Употребляйте максимально содержательные слова 83
Итог 83

ЧастьII. Упрощение цикла и логики

Глава 7. Как сделать поток команд управления
удобочитаемым 87
Порядок аргументов в условных конструкциях 88
Порядок блоков if/else 89
Условная конструкция ?: (также известная как тернарный оператор) . . . . 91
Избегайте циклов do/while 92
Слишком быстрый возврат из функции 94
Пресловутый goto 94
Сокращаем количество вложенного кода 95
Можете ли вы отследить порядок выполнения вашей программы? 98
Итог 99

Глава 8. Разбиваем длинные выражения 101
Поясняющие переменные 102
Итоговые переменные 102
Используем законы де Моргана 103
Злоупотребление упрощенной логикой 104
Пример: боремся со сложной логикой 104
Разбиваем огромные утверждения 107
Еще один творческий способ упрощения выражений 108
Итог 109

Глава 9. Переменные и читаемость 111
Избавляемся от переменных 112
Сокращаем область видимости ваших переменных 115
Используйте переменные, меняющие свое значение однократно 121
Последний пример 122
Итог 124

ЧастьIII. Реорганизация кода

Глава 10. Выделяем побочные подзадачи 127
Вводный пример: findClosestLocation() 128
Чистый вспомогательный код 130
Прочий универсальный код 130
Создавайте больше универсального кода 132
Функциональность, специфичная для проекта 133
Упрощаем существующий интерфейс 134
Изменяем интерфейс под собственные нужды 135
Все хорошо в меру 136
Итог 137

Глава 11. Одна задача в любой момент времени 139
Задания могут быть маленькими 141
Извлекаем значения из объекта 142
Более объемный пример . . . . 146
Итог 149

Глава 12. Превращаем мысли в код 151
Четко описываем логику 152
Библиотеки нам помогут 153
Применяем этот метод к более объемным задачам 154
Описание решения задачи на русском языке 156
Итог 158

Глава 13. Пишите меньше кода 161
Не беспокойтесь о реализации этой функции —
она вам не понадобится 162
Критикуйте и разделяйте ваши требования 162
Сохраняйте базу кода небольшой 164
Старайтесь изучать возможности доступных библиотек 165
Пример: использование инструментов UNIX вместо написания к о д а . . . . 166
Итог 167

Часть IV. Избранные темы

Глава 14. Тестирование и читаемость 171
Создавайте тесты, которые легко читать и обслуживать 172
Что не так с этим тестом? 172
Приводим тест в читаемый вид 173
Создание минимального тестового выражения 174
Реализуем пользовательские мини-языки 175
Что было не так с тем тестом? 182
Разработка, ориентированная на тестирование 183
Не увлекайтесь! 185
Итог 186

Глава 15. Разработка и реализация счетчика минут и часов . . . 187
Постановка задачи 188
Определение интерфейса класса 188
Первый подход: простое решение 191
Вторая попытка: реализация конвейерного дизайна 194
Третья попытка: дизайн, при котором время делится на блоки 197
Сравнение трех решений 202
Итог 202