совершенный код стива макконнелла pdf
Совершенный код, Мастер-класс, Макконнелл С., 2010
Совершенный код, Мастер-класс, Макконнелл С., 2010.
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство. Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Почему конструирование ПО так важно?
Раз уж вы читаете эту книгу; вы наверняка понимаете важность улучшения качества ПО и повышения производительности труда разработчиков. Многие из самых удивительных современных проектов основаны на применении ПО: Интернет и спецэффекты в кинематографе, медицинские системы жизнеобеспечения и космические программы, высокопроизводительный анализ финансовых данных и научные исследования. Эти, а также более традиционные проекты имеют много общего, поэтому применение улучшенных методов программирования окупится во всех случаях.
Признавая важность улучшения разработки ПО в целом, вы можете спросить: «Почему именно конструированию в этой книге уделяется такое внимание?».
Ответы на этот вопрос приведены ниже.
Конструирование — крупная часть процесса разработки ПО В зависимости от размера проекта на конструирование обычно уходит 30-80 % общего времени работы.
Все, что занимает так много времени работы над проектом, неизбежно влияет на его успешность.
Конструирование занимает центральное место в процессе разработки ПО Требования к приложению и его архитектура разрабатываются до этапа конструирования, чтобы гарантировать его эффективность. Тестирование системы (в строгом смысле независимого тестирования) выполняется после конструирования и служит для проверки его правильности. Конструирование — центр процесса разработки ПО.
Содержание.
Предисловие.
Благодарности.
Контрольные списки.
Часть I Основы разработки ПО.
1 Добро пожаловать в мир конструирования ПО.
2 Метафоры, позволяющие лучше понять разработку ПО.
3 Семь раз отмерь, один раз отрежь: предварительные условия.
4 Основные решения, которые приходится принимать при конструировании.
Часть II Высококачественный код.
5 Проектирование при конструировании.
6 Классы.
7 Высококачественные методы.
8 Защитное программирование.
9 Процесс программирования с псевдокодом.
Часть III Переменные.
10 Общие принципы использования переменных.
11 Сила имен переменных.
12 Основные типы данных.
13 Нестандартные типы данных.
Часть IV Операторы.
14 Организация последовательного кода.
15 Условные операторы.
16 Циклы.
17 Нестандартные управляющие структуры.
18 Табличные методы.
19 Общие вопросы управления.
Часть V Усовершенствование кода.
20 Качество ПО.
21 Совместное конструирование.
22 Тестирование, выполняемое разработчиками.
23 Отладка.
24 Рефакторинг.
25 Стратегии оптимизации кода.
26 Методики оптимизации кода.
Часть VI Системные вопросы.
27 Как размер программы влияет на конструирование.
28 Управление конструированием.
29 Интеграция.
30 Инструменты программирования.
Часть VII Мастерство программирования.
31 Форматирование и стиль.
32 Самодокументирующийся код.
33 Личность.
34 Основы мастерства.
35 Где искать дополнительную информацию.
Библиография.
Предметный указатель.
Об авторе.
Скачать pdf
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Совершенный код
Руководство для программиста.
Стив Макконнелл «Совершенный код» Питер, 2010 год, 896 стр., 2-е издание (6,12 мб. pdf)
Совершенный код, а бывает ли такой вообще? Такой вопрос возникает когда впервые видишь название этой книги. Главная цель, которую автор поставил при написании руководства это нивелирование разрыва в знаниях, методиках и стилях прикладного и коммерческого программирования. Изучая книгу вы сможете критически оценить свой опыт программирования и избежать проблем с которыми сталкивались в прошлом.
Книга «Совершенный код» полезна и для опытных программистов, для них она станет справочным и удобным руководством при разработке ПО. Так как эта книга акцентируется на создании — самой доступной части рабочего цикла ПО, — предложенные в ней методики понятны, как разработчикам, получившим профессиональное образование, так и программистам-самоучкам.
Нужную информацию в книге для себя найдет кодер любого уровня, какая бы ни была степень сложности разрабатываемого вами проекта. Не просто создать совершенный код, но стремление к вершинам мастерства заставляет настоящих профессионалов постоянно совершенствоваться. Читая книгу и применяя на практике рекомендации и методики автора вы сможете достичь изящества, простоты и элегантности при создании кода для программного обеспечения, а это в свою очередь позволит приблизиться к совершенству в профессии программиста.
ISBN 978-5-7502-0064-1
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
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
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
19.5. Основа программирования: структурное программирование 448
19.6. Управляющие структуры и сложность 450
Часть V Усовершенствование кода
20 Качество ПО 456
20.1. Характеристики качества ПО 456
20.2. Методики повышения качества ПО 459
20.3. Относительная эффективность
методик контроля качества ПО 462
20.4. Когда выполнять контроль качества ПО 466
20.5. Главный Закон Контроля Качества ПО 467
21 Совместное конструирование 471
21.1. Обзор методик совместной разработки ПО 472
21.2. Парное программирование 475
21.3. Формальные инспекции 477
21.4. Другие методики совместной разработки ПО 484
21.5. Сравнение методик совместного конструирования 487
22 Тестирование, выполняемое разработчиками 490
22.1. Тестирование, выполняемое разработчиками, и качество ПО 492
22.2. Рекомендуемый подход к тестированию, выполняемому разработчиками 494
22.3. Приемы тестирования 496
22.4. Типичные ошибки 507
22.5. Инструменты тестирования 513
22.6. Оптимизация процесса тестирования 518
22.7. Протоколы тестирования 520
23 Отладка 524
23.1. Общие вопросы отладки 524
23.2. Поиск дефекта 529
23.3. Устранение дефекта 539
23.4. Психологические аспекты отладки 543
23.5. Инструменты отладки — очевидные и не очень 545
24 Рефакторинг 551
24.1. Виды эволюции ПО 552
24.2. Введение в рефакторинг 553
24.3. Отдельные виды рефакторинга 559
24.4. Безопасный рефакторинг 566
24.5. Стратегии рефакторинга 568
25 Стратегии оптимизации кода 572
25.1. Общее обсуждение производительности ПО 573
25.2. Введение в оптимизацию кода 576
25.3. Где искать жир и патоку? 583
25.4. Оценка производительности 588
25.5. Итерация 590
25.6. Подход к оптимизации кода: резюме 591
26 Методики оптимизации кода 595
26.1. Логика 596
26.2. Циклы 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. Влияние размера проекта на возникновение ошибок 636
27.4. Влияние размера проекта на производительность 638
27.5. Влияние размера проекта на процесс разработки 639
28 Управление конструированием 645
28.1. Поощрение хорошего кодирования 646
28.2. Управление конфигурацией 649
28.3. Оценка графика конструирования 655
28.4. Измерения 661
28.5. Гуманное отношение к программистам 664
28.6. Управление менеджером 670
29 Интеграция 673
29.1. Важность выбора подхода к интеграции 673
29.2. Частота интеграции — поэтапная или инкрементная 675
29.3. Стратегии инкрементной интеграции 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
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. Комментировать или не комментировать 764
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
Стив Макконнелл
В прошлый раз мы познакомились с выдающимся человеком Пол Грэмом, который написал одни из лучших статей о стартапах, программировании и бизнесе. Сегодня я хочу рассказать вам о такой выдающейся личности, как Стив Макконнелл.
Интересно, что в далеком 1998 году читатели журнала «Software Development» признали Стива одним из трех наиболее влиятельных людей в отрасли разработки ПО наряду с Биллом Гейтсом и Линусом Торвальдсом.
Если говорить коротко, то Steven C. McConnell — программист и автор книг по разработке ПО.
Он написал книги «Rapid Development» (1996), «Software Project Survival Guide» (1998), «Professional Software Development» (2004). Журнал «Software Development», кстати, дважды удостоил его книги премии Jolt Excellence как лучшие книги года о разработке ПО.
Кстати, вы наверняка слышали фразу «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете». Так вот, эту фразу приписывают именно Стиву.
Совершенный код
Книга Стива Макконнелла, которую вам крайне желательно прочитать хотя бы раз в своей жизни. Чрезвычайно полезный для реальной практики материал, которая пропагандирует исключительно грамотные принципы при разработке ПО.
Вот описание данной книги, взятое с интернет-магазина OZON:
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования.
Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство.
Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Профессиональная разработка программного обеспечения
Данную книгу я уже рекомендовать к обязательному чтению не буду. По большей части она представляет из себя мемуары и много размышлений автора. (говорят, похожа на «Дизайн и эволюция С++» Страуструпа)
Интересная и легкочитаемая книга, если вы со страстью изучаете все вопросы, касающиеся разработки ПО. В противном случае, лучше уделить больше времени более практичным материалам.
Для удобства также привожу описание книги:
Стив Макконнелл, автор бестселлера «Совершенный код», других книг и многочисленных статей о разработке ПО, убедительно показывает, что разработка ПО может быть стабильно успешной, если сделать совершеннее саму профессию разработчика ПО.
Он не только показывает, почему и как отрасль пришла к своему современному состоянию, и описывает шаги, которые должен предпринять каждый, кто хочет подняться на новый уровень в создании ПО.
Он также говорит о корпоративных методиках, призванных увеличить количество профессионально выполненных проектов, и о лицензировании организаций и академических учебных программ как о средстве повышения профессионализма и отдельных разработчиков, и в индустрии ПО в целом.
10 смертных грехов в оценке трудоёмкости разработки ПО
На ХабраХабре относительно недавно появилась отличная статья, о которой я просто не могу не упомянуть. А именно короткий и ясный пересказ (и перевод) часового вебинара от Стива Макконелла, который проходил в июне 2009 года.
Настоятельно рекомендую к ознакомлению. Очень верно подметил один из комментаторов этой статьи:
Большинство (или даже все) из приведенных «смертных грехов» так или инчае понимает любой адекватный разработчик, но иметь такой вот список очень полезно — можно лишний раз просмотреть его перед началом нового проекта и уберечь себя от ненужных ошибок. В избранное!
P.S. Так получилось (я уже писал об этом в твиттере), что за свою жизнь я столкнулся с двумя Макконеллами: Стивом и Кэмпбеллом. Не путайте их. Это два совершенно разных профессионала. Один — в экономике, другой — в разработке ПО.
Стив Макконелл вообще крайне интересный человек. Посмотрите, к примеру, какой он сделал у себя домашний кинотеатр. Перечень всех его книг можно найти там же. Вообще рекомендую изучить его личный сайт.
Я уже упоминал потрясающую книгу Вы, конечно, шутите, мистер Фейнман! в одной из прошлых своих статей.
Так вот: оказывается, существует еще и продолжение этой замечательной книги: Какое тебе дело до того, что думают другие! Если у Вас есть свободное время и вы любите читать истории других людей (очень близкие нам, программистам) — однозначно рекомендую!
Совершенный код. Практическое руководство по разработке программного обеспечения
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования.
Отзывы читателей
Скачать книгу «Совершенный код. Практическое руководство по разработке программного обеспечения»
О книге
В суете повседневных дел хочется остановиться и дать себе возможность восстановить силы. А читая книги, ты будто отправляешься в другой мир и можешь побыть кем-то другим или посмотреть на этих других намного ближе и внимательнее. Литература показывает, сколь различны и многовариантны судьбы людей, и ты осознаёшь, что ты – только часть огромного мира.
Книга «Совершенный код. Практическое руководство по разработке программного обеспечения» Макконнелл Стив – настоящий шедевр литературного искусства, относящийся к жанру образовательная литература. Писателю максимально полно удалось передать свое видение на страницах книги. Каждый персонаж тщательно проработан, чтобы читатель мог понять особенности его личности и поступки.
Писатель говорит о таких темах, которые актуальны во все времена, потому что люди все равно остаются людьми и не забудут о том, что им важно. Это такое произведение, которое приносит не только удовольствие при чтении, но и развивает духовно. Это одна из тех книг, от которых не хочется отрываться, пока не будет прочитана последняя страница. Объём книги – 889 страниц, она была выпущена в 2005 году издательством «Русская Редакция». На сайте можно читать книгу онлайн или скачать в формате djvu.
Совершенный код. Практическое руководство по разработке программного обеспечения
Эта и ещё 2 книги за 299 ₽
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО – с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство. Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Книга состоит из 35 глав, предметного указателя и библиографии.
Отзывы 6
Одна из лучших книг по программированию, обязательное чтение для всех программистов. Книга не привязана к какому-то конкретному языку или технологии, более того, в ней проводится четкое различие между программированием на каком-то языке и программирование с использованием конкретного языка.
Основная тема – управление сложностью – современные программные проекты становятся все больше и больше, голова человека просто не в состоянии удержать такой объем информации. Поэтому подавляющая часть времени разработчиков уходит на отладку уже существующего кода и попытки изменять его таким образом, чтобы не поломать все остальное. Многие проекты погибают от собственной сложности – изменять их становится настолько сложно, что проще переписать все с нуля.
Макконел на всех уровнях рассматривает методики написания надежного и расширяемого кода, который легко менять добавляя новые возможности и в котором легко исправлять ошибки – наглядно выражая это в принципе «код надо писать так, чтобы его было легко читать и понимать, даже если такой код писать дольше и сложнее». Начиная с проектирования архитектуры автор через классы спускается до отдельных методов, кусков кода вроде циклов и условных операторов, методик отладки и правильной оптимизации производительности. Примеры демонстративно идут вперемешку на C++, Java и Visual Basic
Книга где автор может 50 страниц детально описывать правильные методики комментирования кода и сообщать массу полезной информации.