совершенный код автор с макконнелл
Стив Макконнелл
В прошлый раз мы познакомились с выдающимся человеком Пол Грэмом, который написал одни из лучших статей о стартапах, программировании и бизнесе. Сегодня я хочу рассказать вам о такой выдающейся личности, как Стив Макконнелл.
Интересно, что в далеком 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. Так получилось (я уже писал об этом в твиттере), что за свою жизнь я столкнулся с двумя Макконеллами: Стивом и Кэмпбеллом. Не путайте их. Это два совершенно разных профессионала. Один — в экономике, другой — в разработке ПО.
Стив Макконелл вообще крайне интересный человек. Посмотрите, к примеру, какой он сделал у себя домашний кинотеатр. Перечень всех его книг можно найти там же. Вообще рекомендую изучить его личный сайт.
Я уже упоминал потрясающую книгу Вы, конечно, шутите, мистер Фейнман! в одной из прошлых своих статей.
Так вот: оказывается, существует еще и продолжение этой замечательной книги: Какое тебе дело до того, что думают другие! Если у Вас есть свободное время и вы любите читать истории других людей (очень близкие нам, программистам) — однозначно рекомендую!
Совершенный код, Мастер-класс, Макконнелл С., 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
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу
Совершенный код. Практическое руководство по разработке программного обеспечения
Скачать книгу (полная версия)
О книге «Совершенный код. Практическое руководство по разработке программного обеспечения»
Книгу Стива Макконнелла «Совершенный код» стоит прочитать каждому программисту, который хочет развиваться и совершенствовать свои навыки. Автор очень подробно пишет обо всем, что касается программирования. Он рассказывает об этой теме в общем и целом, не привязывая информацию из книги к какому-то конкретному языку программирования.
В книге подробно рассмотрен каждый шаг программирования, при этом автор говорит о том, что само написание кода должно занимать минимум времени, а все остальное время нужно посвящать другим этапам. Интересным будет подход через написание псевдокода. В книге также рассмотрены этапы проектирования, тестирования и отладки, поиска решения проблем. Все это подробно расписано, приводятся примеры, ссылки на различные исследования.
Автор подробно рассказывает о принципах, которым нужно следовать, чтобы создать хороший и понятный код. Он говорит, как грамотно уменьшать число переменных, какие выбрать имена переменных, методов, классов, чтобы код был четким и не был слишком сложным. Этот учебник стоит всегда держать под рукой, в нем можно найти массу полезных советов, постоянно находя для себя что-то новое. И новички, и профессиональные программисты смогут получить что-то полезное из книги.
На нашем сайте вы можете скачать книгу «Совершенный код. Практическое руководство по разработке программного обеспечения» Макконнелл Стив бесплатно и без регистрации в формате djvu, читать книгу онлайн или купить книгу в интернет-магазине.
Субьективная выжимка из «Совершенный код:2 издание» Стива Макконнелла
Сегодня я дочитал очень интересный и многообразный труд по программированию «Совершенный код: 2 издание» Стива Макконнелла. Немного посидев, я решил составить небольшую выдержку из этой книги, дабы и свою память время от времени освежать, ну и может пригодится кому-то тоже. Фрагменты из книги копировать не буду, все-таки это чужой труд. Исключение составит лишь библиографический список, приведенный в конце книги. Итак:
Первая мысль, которая осталась после прочтения звучит: «Программируйте не на языке, а с помощью языка». Иными словами: не нужно зацикливаться на том языке, который Вы изучаете или знаете лучше всего. Используйте язык в зависимости от поставленной задачи. А для решения разных задач, как известно, разные языки могут быть более предпочтительными.
«Код пишут не для компьютера, а для человека» — тоже интересная мысль. Многие думают, что программировать, это значит давать команды компьютеру что-либо делать. По сути, это, конечно, так и есть. НО! Не стоит забывать, что текст программы должен быть понятен тому, кто его будет смотреть, править, изменять. Если рассуждать о том, что программировать — это командовать компьютером, тогда зачем нам высокоуровневые языки? Зачем нам различные фреймворки и тд? Давайте писать на ассемблере или вообще в двоичном виде, все равно же мы для компьютера пишем, а ему двоичное роднее. Тут не стоит вопрос об удобности или ускорения программирования, здесь стоит вопрос о формировании такой культуры программирования, в которой человеку в первую очередь должно быть понятно что и как делается в программе. Компьютер он и так поймет, но вот поймет ли человек, зависит от того, насколько мы будем придерживаться раскрываемого принципа.
Из этой мысли вытекают несколько других принципов: «Если это возможно, не используйте GOTO». Для понимания чего-либо человеку удобно видеть информацию в логичном, систематизированном виде. Каким бы Вы не были высокоразвитой или творческой личностью, информация легче усваивается, если она выкладывается, подчиняясь определенной логике. Программу легче понять, когда функция идет за функцией. Заканчивается одно, начинается другое. Оператор «GOTO» нарушает подобную конструкцию. Он позволяет произвольно перепрыгивать из одного места в другое. Программа выполняется, но плохо понимается. Точнее, долго понимается. Есть сторонники и противники «GOTO», ведутся дискуссии, но, думаю, для нас можно просто решить это не использовать.
Также в эту группу можно включить «Не используйте циклы, вложенность которых больше 3-х». Я сам не раз сталкивался с проблемой понимания многосложных циклов. Было ощущения, что это как-то неправильно, неудобно, хотя и работает. Для осознания этой мысли и формализации в словесную форму надо было почитать эту книгу.
«Комментируйте свой код». Думаю, это очень даже логично. Несмотря на всякие там «Хороший код не нуждается в комментировании, он самопонятен», или «Не нужно заполонять экран лишними символами», или «Хочешь объяснить код – пиши документацию отдельно» и все такое. Это все понятно. Но мне кажется, что хороший комментарий имеет право на жизнь. В книге, кстати, приводятся различные смысловые и визуальные реализации комментариев. Об этом как-то не задумываешься, но, прочитав, начинаешь это замечать и использовать.
«Начиная писать программу, составь для себя конвенцию стиля-форматирования». Думаю, эта мысль более актуальна для новичков-программистов. Несмотря на дискуссии о «правильности» того или иного форматирования (4 пробела или 2, открывающая скобка в конце строки или с начала следующей и тд.), важно избрать для себя какой-то один стиль и максимально, но без фанатизма придерживаться его. Даже если тот программист, который пишет в другом стиле, будет просматривать Ваш код, ему будет легко его читать, даже несмотря на различность стиля. Сначала Вы составите для себя правило форматирования, потом оно станет просто привычкой.
«Сначала подумай, потом пиши или семь раз отмерь, потом режь». Неплохо, прежде чем начинать писать интерфейс контроллера, подумать о программе глобально. Что она будет делать, что куда будет передаваться, что где будет храниться и кому что будет видно. Буквально недавно я начал писать для себя технические задания сам, для, так сказать, организации труда. До этого было как-то лень или я думал, что все и так понятно. Но, как оказалось, озвучивание того, что я собираюсь делать очень даже полезная вещь (Кто бы мог подумать?). Как в кувшин, сначала закидываем большие камни, потом поменьше, потом еще меньше, потом песочек и вуаля, кувшин – полон и все влезло как надо.
«Этапы формирования программы: планирование->разработка->тестирование->отладка». Думаю, логично, во время тестирования своего творения заниматься именно тестированием, а не продумывать как бы еще и чего бы добавить. Часто бывает, что во время разработки становится понятно, что что-то идет не так. Ну, неудобно как-то все. И вместо того, чтобы реализовывать приходиться опять планировать. Чтобы как можно реже это воспроизводить, предлагается доводить каждый этап до конца и в своем порядке.
«KISS, DRY, YAGNI, DIE». Всем известные принципы, которые, почему-то известны не всем. Все это американские аббревиатуры. По-русски звучат как: делай проще, не повторяйся, тебе это не понадобится и дублирование — зло.
«80% времени тратится на реализацию 20% функционала». Иными словами, большую часть времени реализации мы тратим на какие-то мелочи. Все бы ничего, но, возможно, в этих мелочах вовсе нет надобности. Нужно суметь правильно расставить приоритеты и уделять время на то, что действительно важно.
«Сначала неприятное». Думаю, что у всех разработчиков есть какие-то вещи, которые ну не очень хочется делать. Кто-то не любит базы данных, кто-то не любит возиться с AJAX или еще что-нибудь. Переносить на неопределенное время то, что неприятно неправильно. Когда, например, так делаю я, то процесс разработки несколько увеличивается. Я чувствую, что вот-вот, еще немного, и надо будет заниматься этим самым, «неприятным». И вдруг обнаруживается, что вот в этом месте можно покрасивее функцию сделать. Здесь отступов меньше, чем надо и в таком духе. Это лично у меня так.
«Образование и чтение, совершенствование и оттачивание». Ни для кого не секрет, что нужно в нашем современном мире образовываться практически без остановки. Читать, общаться с гуру, все такое. Особенно если Вы разработчик мобильных приложений (шутка). Так вот читать в неделю 35 страниц тематической литературы – это обязательно. Остановимся на этом.
«Разделения труда, разделение программ, разделяй и властвуй». Сегодня, слава богам, существуют различные методики разделения команд и труда для аккуратной, быстрой и адекватной работы(методики управления проектами). Различные SCRUM, AGILE, внутренние программы. Сегодня, слава богам, существуют различные методики разделения кода(системы контроля версий). Различные GIT, SVN, Mercurial. Так давайте все это использовать (когда удобно, конечно)!
«Говорящие фамилии». Чуть не забыл про названия. Это вытекает логичным образом из формирования своего, всем понятного стиля. Сюда относится: называние классов с большой буквы все слова, называние функций с маленькой буквы и остальные слова с большой, называние констант ВСЕ_БОЛЬШИЕ_БУКВЫ и так далее. Такие мелочи очень помогают и ускоряют понимание.
Думаю, можно закончить мою двухколесную выдержку. Общее ощущение от книги положительное. Хотя иногда возникало ощущение, что эта книга написана ни для кого. Т.е. вроде для профессионального (опытного) программиста это все и так должно быть понятно, а для начинающего много того, что, по сути, не совсем понятно. Даже самое первое «с языком, а не на языке» для начинающего, знающего только один язык, может быть не совсем ясно. Ну а для гуру многостраничные рассказы про комментарии и названия вообще могут вызвать недоумение. Если преодолеть некоторый дискомфорт, связанный с этими моментами (если он, конечно, возникнет), то читать можно. Как Чехова, не хуже.
ОЗОН прислал мне еще книги: «Мифический человеко-месяц», «Приемы объектно-ориентированного программирования: паттерны проектирования» и «Анализ алгоритмов». Если кому интересно что-то, могу прочитать и тезисно изложить. Или выделить какие-то особенно интересные для вас моменты. Также принимаю конструктивную критику и пожелания прекратить марать бумагу. Всем удачи!
Совершенный код. Практическое руководство по разработке программного обеспечения
Эта и ещё 2 книги за 299 ₽
Отзывы 6
Одна из лучших книг по программированию, обязательное чтение для всех программистов. Книга не привязана к какому-то конкретному языку или технологии, более того, в ней проводится четкое различие между программированием на каком-то языке и программирование с использованием конкретного языка.
Основная тема – управление сложностью – современные программные проекты становятся все больше и больше, голова человека просто не в состоянии удержать такой объем информации. Поэтому подавляющая часть времени разработчиков уходит на отладку уже существующего кода и попытки изменять его таким образом, чтобы не поломать все остальное. Многие проекты погибают от собственной сложности – изменять их становится настолько сложно, что проще переписать все с нуля.
Макконел на всех уровнях рассматривает методики написания надежного и расширяемого кода, который легко менять добавляя новые возможности и в котором легко исправлять ошибки – наглядно выражая это в принципе «код надо писать так, чтобы его было легко читать и понимать, даже если такой код писать дольше и сложнее». Начиная с проектирования архитектуры автор через классы спускается до отдельных методов, кусков кода вроде циклов и условных операторов, методик отладки и правильной оптимизации производительности. Примеры демонстративно идут вперемешку на C++, Java и Visual Basic
Книга где автор может 50 страниц детально описывать правильные методики комментирования кода и сообщать массу полезной информации.