Главная - Литература

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

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.0089