Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 738
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
«Великолепное руководство по стилю программирования и конструированию ПО».
Мартин Фаулер, автор книги «Refactoring»
«Книга Стива Макконнелла… это быстрый путь к мудрому программированию… Его книги увлекательны, и вы никогда не забудете то, что он рассказывает, опираясь на свой с тру- дом полученный опыт».
Джон Бентли, автор книги «Programming Pearls, 2d ed»
«Это просто самая лучшая книга по конструированию ПО из всех, что когда-либо попада- лись мне в руки. Каждый разработчик должен иметь ее и перечитывать от корки до корки каждый год. Я ежегодно перечитываю ее на протяжении вот уже девяти лет и все еще уз- наю много нового!»
Джон Роббинс, автор книги «Debugging Applications
for Microsoft .NET and Microsoft Windows»
«Современное ПО
должно быть надежным и гибким, а создание защищенного кода начи- нается с дисциплинированного конструирования программы. За десять лет так и не по- явилось лучшего руководства по этой теме, чем эта книга.
Майкл Ховард, специалист по защите ПО, корпорация Microsoft;
один из авторов книги «Writing Secure Code»
«Это исчерпывающее исследование тактических аспектов создания хорошо спроектиро- ванных программ. Книга Макконнелла охватывает такие разные темы, как архитектура,
стандарты кодирования, тестирование, интеграция и суть разработки ПО».
Гради Буч, автор книги «Object Solutions»
«Авторитетная энциклопедия для разработчиков ПО — вот что такое „Совершенный код“.
Подзаголовок „Практическое руководство по конструированию ПО“ характеризует эту 850- страничную книгу абсолютно точно. Как утверждает автор, она призвана сократить раз- рыв между знаниями „гуру и лучших специалистов отрасли“ (например, Йордона и Прес- смана) и общепринятыми методиками разработки коммерческого ПО, а также „помочь создавать более качественные программы за меньшее время с меньшей головной болью“…
Эту книгу следует иметь каждому разработчику. Ее стиль и содержание в высшей степени практичны».
Крис Лузли, автор книги «High-Performance Client/Server»
«Полная плодотворных идей книга Макконнелла „Совершенный код“ — это одна из са- мых понятных работ, посвященных подробному обсуждению методик разработки ПО…»
Эрик Бетке, автор книги «Game Development and Production»
«Кладезь полезной информации и рекомендаций по общим вопросам проектирования и разработки хорошего ПО».
Джон Демпстер, автор книги «The Laboratory Computer:
A Practical Guide for Physiologists and Neuroscientists»
«Если вы действительно хотите улучшить навыки программирования, обязательно прочтите книгу „Совершенный код“ Стива Макконнелла».
Джин Дж. Лаброссе, автор книги «Embedded Systems Building Blocks:
Complete and Ready-To-Use Modules in C»
«Стив Макконнелл написал одну из лучших книг по разработке ПО, не привязанных к конкретной среде…»
Кеннет Розен, один из авторов книги «Unix: The Complete Reference»
«Пару раз в поколение или около того появляются книги, обобщающие накопленный опыт и избавляющие вас от многих лет мучений… Не могу найти слов, чтобы адекватно опи- сать все великолепие этой книги. „Совершенный код“ — довольно жалкое название для такой превосходной работы».
Джефф Дантеманн, журнал «PC Techniques»
«Издательство Microsoft Press опубликовало то, что я считаю самой лучшей книгой по конст- руированию ПО. Эта книга должна занять место на книжной полке каждого программиста».
Уоррен Кеуффель, журнал «Software Development»
«Эту выдающуюся книгу следует прочесть каждому программисту».
Т. Л. (Фрэнк) Паппас, журнал «Computer»
«Если вы собираетесь стать профессиональным программистом, покупка этой книги, по- жалуй, станет самым мудрым вложением средств. Можете не читать этот обзор дальше —
просто идите в магазин и купите ее. Как пишет сам Макконнелл, его целью было сокра- щение разрыва между знаниями гуру и общепринятыми методиками разработки коммер- ческого ПО… Удивительно, но ему это удалось».
Ричард Матеосян, журнал «IEEE Micro»
«„Совершенный код“ — обязательное чтение для всех… кто имеет отношение к разработ- ке ПО».
Томми Ашер, журнал «C Users Journal»
«Я вынужден сделать чуть более категоричное заявление, чем обычно, и рекомендовать книгу Стива Макконнелла „Совершенный код“ всем разработчикам без всяких оговорок…
Если раньше во время работы я держал ближе всего к клавиатуре руководства по API, то теперь их место заняла книга Макконнелла».
Джим Кайл, журнал «Windows Tech Journal»
«Это лучшая книга по разработке ПО из всех, что я читал».
Эдвард Кенворт, журнал «.EXE»
«Эта книга заслуживает статуса классической, и ее в обязательном порядке должны про- честь все разработчики и те, кто ими управляет».
Питер Райт, «Program Now»
Посвящаю эту книгу своей жене Эшли, которая не имеет особого отношения
к программированию, но настолько обогащает всю мою остальную жизнь,
что я не могу выразить это в словах.
Second Edition
C O D E
COMPLETE
Steve McConnell
Стив Макконнелл
Совершенный
К О Д
2010
М А С Т Е Р - К Л А С С
УДК 004.45
ББК 32.973.26–018.2
М15
Макконнелл С.
М15 Совершенный код. Мастер-класс / Пер. с англ. — М. : Издательство «Русская редакция», 2010. — 896 стр. : ил.
ISBN 978-5-7502-0064-1
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, ил- люстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффектив- ных принципов ясное прагматичное руководство. Каков бы ни был ваш профессио- нальный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Книга состоит из 35 глав, предметного указателя и библиографии.
УДК 004.45
ББК 32.973.26–018.2
© 2005-2012, Translation Russian Edition Publishers.
Authorized Russian translation of the English edition of Code Complete, Second Edition, ISBN 9780735619678
© Steven C. McConnell.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
© 2005-2012, перевод ООО «Издательство «Русская редакция».
Авторизованный перевод с английского на русский язык произведения Code Complete, Second Edition,
ISBN 9780735619678 © Steven C. McConnell.
Этот перевод оригинального издания публикуется и продается с разрешения O’Reilly Media, Inc., которая владеет или распоряжается всеми правами на его публикацию и продажу.
© 2005-2012, оформление и подготовка к изданию, ООО «Издательство «Русская редакция».
Microsoft, а также товарные знаки, перечисленные в списке, расположенном по адресу: http://www.microsoft.com/about/legal/en/us/IntellectualProperty/Trademarks/EN-US.aspx являются товарными знаками или охраняемыми товарными знаками корпорации Microsoft в США и/или других странах. Все другие товарные знаки являются собственностью соответствующих фирм.
Все названия компаний, организаций и продуктов, а также имена лиц, используемые в примерах, вымышлены и не имеют никакого отношения к реальным компаниям, организациям, продуктам и лицам.
Содержание
VII
Содержание
Предисловие .................................................................................................................... XIII
Благодарности ................................................................................................................ XIX
Контрольные списки ...................................................................................................... XXI
Часть I
Основы разработки ПО
1 Добро пожаловать в мир конструирования ПО! .................................................... 2
1.1. Что такое конструирование ПО? ................................................................................................. 2 1.2. Почему конструирование ПО так важно? ........................................................................... 5 1.3. Как читать эту книгу ................................................................................................................................ 6
2 Метафоры, позволяющие лучше понять разработку ПО .................................... 8
2.1. Важность метафор ...................................................................................................................................... 8 2.2. Как использовать метафоры? ...................................................................................................... 10 2.3. Популярные метафоры, характеризующие разработку ПО ........................ 12
3 Семь раз отмерь, один раз отрежь: предварительные условия ...................... 21
3.1. Важность выполнения предварительных условий ............................................... 22 3.2. Определите тип ПО, над которым вы работаете ..................................................... 28 3.3. Предварительные условия, связанные с определением проблемы ...................................................................................................................... 34 3.4. Предварительные условия, связанные с выработкой требований ....... 36 3.5. Предварительные условия, связанные с разработкой архитектуры .................................................................................................................... 41 3.6. Сколько времени следует посвятить выполнению предварительных условий? ..................................................................................................................... 52
4 Основные решения, которые приходится принимать
при конструировании ................................................................................................ 58
4.1. Выбор языка программирования ........................................................................................... 59 4.2. Конвенции программирования ............................................................................................... 63 4.3. Волны развития технологий ........................................................................................................ 64 4.4. Выбор основных методик конструирования ............................................................. 66
Часть II
Высококачественный код
5 Проектирование при конструировании ................................................................. 70
5.1. Проблемы, связанные с проектированием ПО ......................................................... 71 5.2. Основные концепции проектирования ........................................................................... 74 5.3. Компоненты проектирования: эвристические принципы ........................... 84 5.4. Методики проектирования ........................................................................................................ 107 5.5. Комментарии по поводу популярных методологий ........................................ 115
6 Классы ........................................................................................................................ 121
6.1. Основы классов: абстрактные типы данных ............................................................ 122 6.2. Качественные интерфейсы классов .................................................................................. 129 6.3. Вопросы проектирования и реализации ..................................................................... 139
VIII
Содержание
6.4. Разумные причины создания классов ............................................................................. 148 6.5. Аспекты, специфические для языков ................................................................................ 152 6.6. Следующий уровень: пакеты классов ............................................................................... 153
7 Высококачественные методы ............................................................................... 157
7.1. Разумные причины создания методов ............................................................................ 160 7.2. Проектирование на уровне методов ................................................................................ 163 7.3. Удачные имена методов ................................................................................................................. 167 7.4. Насколько объемным может быть метод? ................................................................... 169 7.5. Советы по использованию параметров методов ................................................. 170 7.6. Отдельные соображения по использованию функций ................................. 177 7.7. Методы-макросы и встраиваемые методы ................................................................. 178
8 Защитное программирование ................................................................................ 182
8.1. Защита программы от неправильных входных данных .............................. 183 8.2. Утверждения .............................................................................................................................................. 184 8.3. Способы обработки ошибок .................................................................................................... 189 8.4. Исключения ............................................................................................................................................... 193 8.5. Изоляция повреждений, вызванных ошибками ................................................... 198 8.6. Отладочные средства ....................................................................................................................... 200 8.7. Доля защитного программирования в промышленной версии ........... 204 8.8. Защита от защитного программирования ................................................................. 206
9 Процесс программирования с псевдокодом ...................................................... 209
9.1. Этапы создания классов и методов .................................................................................... 210 9.2. Псевдокод для профи ....................................................................................................................... 211 9.3. Конструирование методов с использованием ППП ......................................... 214 9.4. Альтернативы ППП ............................................................................................................................. 225
Часть III
Переменные
10 Общие принципы использования переменных ................................................ 230
10.1. Что вы знаете о данных? ............................................................................................................. 231 10.2. Грамотное объявление переменных ............................................................................. 232 10.3. Принципы инициализации переменных ................................................................ 233 10.4. Область видимости ......................................................................................................................... 238 10.5. Персистентность ............................................................................................................................... 245 10.6. Время связывания ............................................................................................................................. 246 10.7. Связь между типами данных и управляющими структурами ............... 247 10.8. Единственность цели каждой переменной ............................................................ 249
11 Сила имен переменных ......................................................................................... 252
11.1. Общие принципы выбора имен переменных ..................................................... 253 11.2. Именование конкретных типов данных ................................................................... 257 11.3. Сила конвенций именования ............................................................................................... 263 11.4. Неформальные конвенции именования ................................................................... 264 11.5. Стандартизованные префиксы ........................................................................................... 272 11.6. Грамотное сокращение имен переменных ............................................................ 274 11.7. Имена, которых следует избегать ..................................................................................... 277
Содержание
IX
12 Основные типы данных ......................................................................................... 282
12.1. Числа в общем ...................................................................................................................................... 283 12.2. Целые числа ............................................................................................................................................ 284 12.3. Числа с плавающей запятой ................................................................................................... 286 12.4. Символы и строки ............................................................................................................................ 289 12.5. Логические переменные ............................................................................................................ 292 12.6. Перечислимые типы ...................................................................................................................... 294 12.7. Именованные константы .......................................................................................................... 299 12.8. Массивы ...................................................................................................................................................... 301 12.9. Создание собственных типов данных (псевдонимы) ................................. 303
13 Нестандартные типы данных ............................................................................... 310
13.1. Структуры ................................................................................................................................................. 310 13.2. Указатели ................................................................................................................................................... 314 13.3. Глобальные данные ......................................................................................................................... 326
Часть IV
Операторы
14 Организация последовательного кода .............................................................. 338
14.1. Операторы, следующие в определенном порядке ........................................... 338 14.2. Операторы, следующие в произвольном порядке ........................................... 342
15 Условные операторы ............................................................................................. 346
15.1. Операторы if ........................................................................................................................................... 346 15.2. Операторы case ................................................................................................................................... 353
16 Циклы ........................................................................................................................ 359
16.1. Выбор типа цикла ............................................................................................................................. 359 16.2. Управление циклом ........................................................................................................................ 365 16.3. Простое создание цикла — изнутри наружу ......................................................... 378 16.4. Соответствие между циклами и массивами ........................................................... 379
17 Нестандартные управляющие структуры ......................................................... 382
17.1. Множественные возвраты из метода ............................................................................ 382 17.2. Рекурсия ...................................................................................................................................................... 385 17.3. Оператор goto ....................................................................................................................................... 389 17.4. Перспективы нестандартных управляющих структур ................................ 401
18 Табличные методы ................................................................................................. 404
18.1. Основные вопросы применения табличных методов ................................ 405 18.2. Таблицы с прямым доступом ................................................................................................. 406 18.3. Таблицы с индексированным доступом .................................................................... 418 18.4. Таблицы со ступенчатым доступом ................................................................................ 419 18.5. Другие примеры табличного поиска ............................................................................ 422
19 Общие вопросы управления ................................................................................ 424
19.1. Логические выражения ............................................................................................................... 424 19.2. Составные операторы (блоки) ............................................................................................ 436 19.3. Пустые выражения ........................................................................................................................... 437 19.4. Укрощение опасно глубокой вложенности ........................................................... 438