Главная
Попытка заменить пчелу
Предложения советских рационализаторов
Радиоэлектронные собеседники животных
Роботехника в производстве и в быту
Тайна профессора Рентгена
Деталь сама себя обрабатывает и охлаждает
Желтый подводный робот
Ледяные корабли
Открытия и наблюдения советских ученых
Новаторская перевозка грузов
Перпетуум мобиле с Алексеем Воробьёвым-Обуховым
Пишущая машинка стенографирует и расшифровывает
Шахматная махина маэстро кэмпелена
Роторно-винтовые ледоколы
Русскому керосину - 160 лет
Спасение в воздушных просторах
Что умеют машины
|
Главная - Литература 25.5. Итерация....................................................................................................................................................590 25.6. Подход к оптимизации кода: резюме...........................................................................591 26 Методики оптимизации кода................................................................................595 261. Логика...........................................................................................................................................................596 262. Циклы............................................................................................................................................................602 26.3. Изменения типов данных.........................................................................................................611 26.4. Выражения...............................................................................................................................................616 26.5. Методы.........................................................................................................................................................625 26.6. Переписывание кода на низкоуровневом языке...............................................626 26.7. Если что-то одно изменяется, что-то другое всегда остается постоянным............................................................................................629 Часть VI Систегные вопросы 27 Как размер программы влияет на конструирование......................................634 27.1. Взаимодействие и размер.........................................................................................................635 27.2. Диапазон размеров проектов................................................................................................636 27.3. Влияние размера проекта на возникновение ошибок................................63б 27.4. Влияние размера проекта на производительность........................................638 27.5. Влияние размера проекта на процесс разработки.........................................639 28 Управление конструированием...........................................................................645 28.1. Поощрение хорошего кодирования.............................................................................б4б 28.2. Управление конфигурацией..................................................................................................649 28.3. Оценка графика конструирования.................................................................................655 28.4. Измерения................................................................................................................................................661 28.5. гуманное отношение к программистам.....................................................................664 28.6. Управление менеджером...........................................................................................................670 29 Интеграция...............................................................................................................673 291. Важность выбора подхода к интеграции..................................................................673 29.2. Частота интеграции - поэтапная или инкрементная?..............................675 293. Стратегии инкрементной интеграции.......................................................................678 29.4. Ежедневная сборка и дымовые тесты...........................................................................686 30 Инструменты программирования.......................................................................694 30.1. Инструменты для проектирования.................................................................................695 30.2. Инструменты для работы с исходным кодом.......................................................695 30.3. Инструменты для работы с исполняемым кодом.............................................700 30.4. Инструменты и среды...................................................................................................................704 30.5. Создание собственного программного инструментария.......................705 30.6 Волшебная страна инструментальных средств..................................................707 Часть VII Мастерство программирования 31 Форматирование и стиль......................................................................................712 31.1. Основные принципы форматирования....................................................................713 31.2. Способы форматирования......................................................................................................720 31.3. Стили форматирования.............................................................................................................721 XII Содержание 31.4. Форматирование управляющих структур...............................................................728 31.5. Форматирование отдельных операторов................................................................736 31.6. Размещение комментариев.....................................................................................................747 31.7. Размещение методов......................................................................................................................750 31.8. Форматирование классов.........................................................................................................752 32 Самодокументирующийся код............................................................................760 32.1. Внешняя документация...............................................................................................................760 32.2. Стиль программирования как вид документации...........................................761 32.3. Комментировать или не комментировать?.............................................................7б4 32.4. Советы по эффективному комментированию....................................................768 32.5. Методики комментирования................................................................................................774 32.6. Стандарты IEEE....................................................................................................................................795 33 Личность...................................................................................................................800 33.1. Причем тут характер?...................................................................................................................801 33.2. Интеллект и скромность............................................................................................................802 33.3. Любопытство.........................................................................................................................................803 33.4. Профессиональная честность.............................................................................................806 33.5. Общение и сотрудничество...................................................................................................809 33.6. Творчество и дисциплина........................................................................................................809 33.7. Лень.................................................................................................................................................................810 33.8. Свойства, которые менее важны, чем кажется.....................................................811 33.9. Привычки..................................................................................................................................................813 34 Основы мастерства................................................................................................817 34.1. Боритесь со сложностью...........................................................................................................817 34.2. Анализируйте процесс разработки................................................................................819 34.3. Пишите программы в первую очередь для людей и лишь во вторую - для компьютеров.............................................................................................................................................821 34.4. Программируйте с использованием языка, а не на языке.......................823 34.5. Концентрируйте внимание с помощью соглашений..................................824 34.6. Программируйте в терминах проблемной области.....................................825 34.7. Опасайтесь падающих камней............................................................................................827 34.8. Итерируйте, итерируйте и итерируйте......................................................................830 34.9. И да отделена будет религия от разработки ПО................................................831 35 Где искать дополнительную информацию.......................................................834 35.1. Информация о конструировании ПО.........................................................................835 35.2. Не связанные с конструированием темы.................................................................836 35.3. Периодические издания............................................................................................................838 35.4. Список литературы для разработчика ПО..............................................................839 35.5. Профессиональные ассоциации......................................................................................841 Библиография.................................................................................................................842 Предметный указатель.................................................................................................863 Об авторе..........................................................................................................................868 Предисловие Разрыв между самыми лучшгши и средними методиками разработки ПО очень широк - вероятно, шире, чем в любой другой инженерной дисциплине. Средство распространения информации о хороших методиках сыграло бы весьма важную роль. Фред Брукс (Fred Brooks) Моей главной целью при написании этой книги было сокращение разрыва между знаниями гуру и лучших специалистов отрасли, с одной стороны, и общепринятыми методиками разработки коммерческого ПО - с другой. Многие эффективные методики программирования годами скрываются в журналах и научных работах, прежде чем становятся доступными программистской общественности. Хотя передовые методики разработки ПО в последние годы быстро развивались, общепринятые практически стояли на месте. Многие программы все еще полны ошибок, поставляются с опозданием и не укладываются в бюджет, а многие не отвечают требованиям пользователей. Ученые обнаружили эффективные методики, устраняющие большинство проблем, которые отравляют нашу жизнь с 1970-х годов. Однако из-за того, что эти методики редко покидают страницы узкоспециализированных технических изданий, в большинстве компаний по разработке ПО они еще не используются. Установлено, что для широкого распространения исследовательских разработок обычно требуется от 5 до 15 и более лет (Raghavan and Chand, 1989; Rogers, 1995; Parnas, 1999). Данная книга призвана ускорить этот процесс и сделать важные открытия доступными средним программистам. Кому следует прочитать эту книгу? Исследования и опыт программирования, отраженные в этой книге, помогут вам создавать высококачественное ПО и выполнять свою работу быстрее и эффективнее. Прочитав ее, вы поймете, почему вы сталкивались с проблемами в прошлом, и узнаете, как избегать их в будущем. Описанные мной методики программирования помогут вам сохранять контроль над крупными проектами, а также успешно сопровождать и изменять ПО при изменении требований. Опытные программисты Эта книга окажется полезной опытным программистам, желающим получить всестороннее и удобное руководство по разработке ПО. Так как эта книга фокусируется на конструировании - самой известной части жизненного цикла ПО, - описанные в ней методики будут понятны и программистам, имеющим соответствующее образование, и программистам-самоучкам. Технические лидеры Многие технические лидеры используют первое издание этой книги для обучения менее опытных членов своих групп. Вы также можете использовать эту книгу для восполнения пробелов в своих знаниях. Если вы - опытный программист, то, наверное, согласитесь не со всеми моими выводами (обратное было бы странным), но, если вы прочитаете весь материал и обдумаете каждый поднятый вопрос, едва ли какая-то возникшая проблема конструирования окажется для вас новой. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 [291] 292 293 294 0.0023 |