Стив Макконнелл. Совершенный код.
От: Аноним  
Дата: 18.05.05 04:48
Оценка: 488 (32)
Статья:
Стив Макконнелл. Совершенный код. Практическое руководство по разработке программного обеспечения
Автор(ы): Стив Макконнелл

Опираясь на академические исследования, с одной стороны, и практический
опыт коммерческих разработок ПО — с другой, автор синтезировал из самых
эффективных методик и наиболее эффективных принципов ясное прагматичное
руководство. Каков бы ни был ваш профессиональный уровень, с какими бы
средствами разработками вы ни работали, какова бы ни была сложность вашего
проекта, в этой книге вы найдете нужную информацию, она заставит вас
размышлять и поможет создать совершенный код. Книга состоит из 35 глав,
предметного указателя и библиографии.


Авторы:
Odi$$ey
orangy

Аннотация:
Пишите код исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живете.
Re: Стив Макконнелл. Совершенный код.
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 20.05.05 05:25
Оценка:
Открыл страничку книги на Болеро. Самое забавное — это книги, которые Болеро рекламирует вместе с книгой Макконела: два самоучителя работы на контупере.
http://www.bolero.ru/product-38312925.html
Re: Стив Макконнелл. Совершенный код.
От: Андрей Щетинин  
Дата: 22.05.05 10:00
Оценка: -2
Мне намного больше нравятся

1. Writing Solid Code by Steve Maguire
2. Pragmatic Programmer by Andrew Hunt and David Thomas
3. Writing Secured Code by Michael Howard

У МакКонела книги слишком занудные, воды много, и методики описываются устаревшие.
Может, второе издание лучще первого (оригинал которого у меня), но я сомневаюсь.

Вышеперечисленные книги в 3 раза тоньше (что означает быстрее), и в 3 раза доходчивей (на примерах из реальных проектов, а не на туманных рассуждениях), объясняют все тоже самое

Андрей
Re[2]: Стив Макконнелл. Совершенный код.
От: orangy Россия
Дата: 22.05.05 14:20
Оценка:
Здравствуйте, Андрей Щетинин, Вы писали:

АЩ>3. Writing Secured Code by Michael Howard

АЩ>Вышеперечисленные книги в 3 раза тоньше (что означает быстрее), и в 3 раза доходчивей (на примерах из реальных проектов, а не на туманных рассуждениях), объясняют все тоже самое
Да ну?! Ховард тоньше чуть-чуть, а уж воды в нём гораздо больше. Имхо, ессно.
"Develop with pleasure!"
Re: Стив Макконнелл. Совершенный код. Цитатник
От: SeRya Россия http://home.onego.ru/~ryazanov/
Дата: 23.05.05 08:07
Оценка: 21 (5) +1
Вот цитаты, которые мне понравились (не все точные, при необходимости лучше сверяться с оригиналом) или по другим причинам я посчитал полезным выписать. Может кому-то интересно.




Избавляя разум от ненужной работы, хорошая нотация позволяет сосредоточиться на более сложных проблемах и в конечном счете повышает интеллект человечества. До появления арабской нотации умножение было весьма сложным, а деление даже целых чисел требовало усилий ведущих математиков. Возможно, ничего в современном мире не смогло бы удивить греческого математика сильнее, чем то, что большинство современнных европейцев умеют делить крупные числа. Это показалось бы ему абсолютно невозможным… Легкость выполнения операций над десятичными дробями – почти что сверъестественный результат постепенного обнаружения отличной нотации.
Alfred North Whitebead.
«Совершенный код», стр. 59

«Грязная проблема» — это проблема, которую можно ясно определить только путем полного частичного или решения.
«Совершенный код», стр. 71

По-моему, управление сложностью настолько важно, что оно должно стать Главным Техническим Императивом Разработки ПО.
«Совершенный код», стр. 75


Очень, очень осторожно относитесь к семантическим нарушением инкапсуляции.
«Совершенный код», стр. 138

Соблюдайте принцип подстановки Лисков (Liskov Substitution Principle, LSP). Барбара Лисков как-то сказала, что наследование стоит использовать, только если производный класс действительно «является» более специализированной версией базового класса (Liskov, 1988). Энди Хант и Дейв Томас сформулировали LSP так: «Клиенты должны иметь возможность использования подклассов через интерфейс базового класса, не замечая никаких различий» (Hurt and Tomas, 2000).
«Совершенный код», стр. 138


Руководствуйтесь соображениями абстракции.
«Совершенный код», глава 6


С подозрением относитесь к классам, которые определяют метод и оставляют его пустым. Скорее всего это не общее свойство.
«Совершенный код», стр. 143

Миксины (mix in) … позволяют подмешивать свойства в производные классы.
«Совершенный код», стр. 145

Law of Demeter (Lieberherr and Holland, 1989): объект A может вызывать любые из собственных методов. Если он создает объект B, он может вызывать любые (открытые) методы объекта B, но ему не следует вызывать методы объектов, возвращаемых объектом B.
«Совершенный код», стр. 147

В лаборатории проектирования ПО NASA были изучены 10 проектов, в которых энергично преследовалось повторное использование кода… В проектах, основанных на объектно ориентированном подходе %70 процентов кода удалось взять из предыдущих проектов… Заметьте, что ядро подхода NASA к созданию повторно используемых классов не включает в себя «проектирование для повторного использования». Классы, претендующие на повторное использование, определяют в NASA в конце проектов. Все действия по упрощению повторного использования классов выполняются как специальный проект или в конце основного проекта или как первый этап нового проекта.
«Совершенный код», стр. 150-151

Операции могут объединяться в методы на основании связности (cohesion):
1. Функциональная связность (лучший вид связности) – на основании общей цели.
2. Последоватльная связность (sequential cohesion) – инкапсуляция порядка выполнения действий.
3. Коммуникационная связность (communicational cohesion) – операции используют одни и те же данные.
4. Временная связность (temporal cohesion) – типичный пример – Startup.
5. Процедурная связность (плохо) – операции выполняются в порядке, зависящем от процедуры, косвенно связанной с целью метода.
6. Логическая связность (logical cohesion).
7. Случайная связность (coincidental cohesion).
«Совершенный код», стр. 165-166


Внимание к деталям на самом деле важно. Если вы сомневаетесь в этом, учтите, что три самых дорогостоящих ошибки всех времен, приведших к убыткам объемом 1,6 миллиарда, 900 миллионов и 245 миллионов доллоров, были вызваны изменением одного символа в ранее корректной программе.
«Совершенный код», стр. 510

Интересно, что если программисты имеют дело не с несколькими строками кода, а с более объемным фрагментом, вероятность внесения корректного изменения более высока.
«Совершенный код», стр. 567


Число видов рефакторинга, выгодных для любой конкретной программы, практически бесконечно. Рефакторинг подчинен тому же закону снижения выгоды, что и другие процессы программирования, и к нему относится правило 80/20. Тратье время на 20% видов рефакторинга, обеспечивающих 80% выгоды.
«Совершенный код», стр. 568

Эффективной стратегией омоложения внедренных старых систем является определение фрагментов, относящихся к грязному реальному миру, фрагментов, формирующих идеализированный новый мир, и фрагментов, определяющих интерфейс между двумя мирами… Ваш код не обязан быть грязным только потому, что таков ральный мир.
«Совершенный код», стр. 569

Бентели также сообщает о случае, когда группа обнаружила, что ОС половину времени проводит в одном небольшом цикле. Переписав цикл на микрокоде, разработчики ускорили его выполнение в 10 раз, но производительность системы осталась прежней – они переписали цикл бездействия системы!
«Совершенный код», стр. 577


Контроль версий – необходимая соствляющая командных проектов. Он становится еще более мощным оружием при интеграции управления версиями, отслеживания дефектов и управления изменениями. Подразделение прикладного ПО Microsoft считает собственный инструментарий управления версиями «важнейшим преимуществом».
«Совершенный код», стр. 653

How to Win Friends and Influence People… Карнеги глубоко проникает в ежедневные взаимоотношения и объясняет, как работать с людьми с помощью лучшего их понимания. Книга полна запоминающихся историй, иногда по две-три на страницу. Любой, кто работает с людьми, должен когда-нибудь прочесть ее, а тот, кто управляет людьми, должен прочесть ее немеделнно.
«Совершенный код», стр. 670


www.sdmagazine.com/jolts. Web-сайт, посвященный ежегодной премии Jolt Productivity журнала «Software Development Magazine», — хороший источник информации о лучших на сегодняшний день инструментах.
«Совершенный код», стр. 708

Если код написан хорошо, комментарии – всего-лишь глазурь на пирожным читабильности.
«Совершенный код», стр. 763

Суть сказанного в том, что вамследует обращать внимание на то, как вы тратите свое время. Если вы вводите или удаляете дефисы для выравнивания плюсов, вы не программируете – вы занимаетесь ерундой. Найдите более эффективный стиль.
«Совершенный код», стр. 773

Игнорирование имеющейся информации стало настолько частым явлением, что привело к возникновению специального акронима «PTFM!», который расшифровывается как «Read The F&*^$*# Manual!»
«Совершенный код», стр. 805
Re[2]: Стив Макконнелл. Совершенный код. Цитатник
От: Ka3a4oK  
Дата: 29.05.05 18:29
Оценка:
ИМХО вполне здравые идеи.

Возник вопрос: вы все это ручками набирали или откуда-то взяли ?
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Стив Макконнелл. Совершенный код. Цитатник
От: raskin Россия  
Дата: 30.05.05 07:18
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>ИМХО вполне здравые идеи.


KK>Возник вопрос: вы все это ручками набирали или откуда-то взяли ?


Не пытайтесь преуменьшить трудолюбие человека. По-моему, я не нарушу правил форума, сказав, что мелкие опечатки свидетельствуют о ручном наборе с большой скоростью.
Re[3]: Стив Макконнелл. Совершенный код. Цитатник
От: SeRya Россия http://home.onego.ru/~ryazanov/
Дата: 31.05.05 08:04
Оценка: +1
Здравствуйте, Ka3a4oK, Вы писали:

KK>ИМХО вполне здравые идеи.


Еще-бы! Это же практически классика.
Там еще много других здравых идей, которые я не счел нужным выписывать для себя, но вполне могут пригодиться другим.

KK>Возник вопрос: вы все это ручками набирали или откуда-то взяли ?


Если вы намекаете на то, что с удовольствием приняли бы в дар электронную копию (к тому же у меня ее нет), то не рекомендую: книги такого объема с экрана читать тяжело. Экономия на своем здоровье здесь врядли оправдана. Тем более, что она неплохой кандидат на звание настольной книги.
Re[2]: Стив Макконнелл. Совершенный код. Цитатник
От: DJ KARIES Россия  
Дата: 01.06.05 15:18
Оценка:
Здравствуйте, SeRya, Вы писали:

SR>Операции могут объединяться в методы на основании связности (cohesion):

SR>1. Функциональная связность (лучший вид связности) – на основании общей цели.
SR>2. Последоватльная связность (sequential cohesion) – инкапсуляция порядка выполнения действий.
SR>3. Коммуникационная связность (communicational cohesion) – операции используют одни и те же данные.
SR>4. Временная связность (temporal cohesion) – типичный пример – Startup.
SR>5. Процедурная связность (плохо) – операции выполняются в порядке, зависящем от процедуры, косвенно связанной с целью метода.
SR>6. Логическая связность (logical cohesion).
SR>7. Случайная связность (coincidental cohesion).
SR>«Совершенный код», стр. 165-166
Вот эту байду мы в политехе (5 курс з/о ПОВТ) в январе проходили на ТРПО (Теория разработки ПО).
ntr soft: www.dkdens.narod.ru :: giref: www.retroforth.org/board/index.php?topic=177.0
Re: Стив Макконнелл. Совершенный код.
От: SergeCpp Россия http://zoozahita.ru
Дата: 03.08.05 09:25
Оценка:
В рецензии написано "...слегка попсовый стиль изложения..."
Купил. Прочитал около трети (с конца).
Стиль, действительно, в некоторых местах попсовый (не слегка).

Как ни странно, маловато нового узнал.

Про "goto" — ну ОЧЕНЬ попсовый стиль изложения
(кто не знал этого — о "goto" — ДО прочтения — кидайте Большой Камень
в Сергея Смирнова /SergeCpp/
НО ТОЛЬКО ЕСЛИ ВЫ НЕ НАЧИНАЮЩИЙ ПРОГРАММИСТ — для вас книга — золото).
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Стив Макконнелл. Совершенный код.
От: Ёрик  
Дата: 25.08.05 09:48
Оценка:
Здравствуйте, SergeCpp, Вы писали:

SC>В рецензии написано "...слегка попсовый стиль изложения..."

SC>Купил. Прочитал около трети (с конца).
SC>Стиль, действительно, в некоторых местах попсовый (не слегка).

SC>Как ни странно, маловато нового узнал.


SC>Про "goto" — ну ОЧЕНЬ попсовый стиль изложения

SC>(кто не знал этого — о "goto" — ДО прочтения — кидайте Большой Камень
SC>в Сергея Смирнова /SergeCpp/
SC>НО ТОЛЬКО ЕСЛИ ВЫ НЕ НАЧИНАЮЩИЙ ПРОГРАММИСТ — для вас книга — золото).

Может, слегка попсовый, но в книжке ОБО ВСЕМ про конструирование без этого не обойтись. По-моему, отличная "библейская" книжка, к тому же написанная с чувством юмора. Я бы заставлял всех студентов-программистов ее читать.
Re[2]: Стив Макконнелл. Совершенный код.
От: Tom Россия http://www.RSDN.ru
Дата: 31.08.05 10:42
Оценка: :)
SC>Про "goto"...
Странно как то. Такую книгу прочитать и вспомнить про гото...
Народная мудрось
всем все никому ничего(с).
Re[2]: Стив Макконнелл. Совершенный код.
От: OnThink Россия http://vassilsanych.livejournal.com
Дата: 28.10.05 06:14
Оценка:
SC>Купил. Прочитал около трети (с конца).
SC>Как ни странно, маловато нового узнал.

"Я Пастернака не читал, но — осуждаю!.." (с)

Вчера по "Культуре" передача была о Гоголе там спорили Виктюк (режисёр) и критик, который как оказалось Гоголя не читал почти. Откуда такое невежество не понимаю.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Стив Макконнелл. Совершенный код.
От: arlekion  
Дата: 05.07.08 19:38
Оценка:
Спорная концепция. Например, автор Coding Horror спорит с тем что существует красивый/совершенный код и не согласен с основной мыслью этой книги: http://www.codinghorror.com/blog/archives/001062.html
Re: Стив Макконнелл. Совершенный код.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.07.08 09:16
Оценка: +1
Здравствуйте, Алексей Кирюшкин, Илья Рыженков, Вы писали:

АКИ>Статья:

АКИ>Стив Макконнелл. Совершенный код. Практическое руководство по разработке программного обеспечения
Автор(ы): Стив Макконнелл

Опираясь на академические исследования, с одной стороны, и практический
опыт коммерческих разработок ПО — с другой, автор синтезировал из самых
эффективных методик и наиболее эффективных принципов ясное прагматичное
руководство. Каков бы ни был ваш профессиональный уровень, с какими бы
средствами разработками вы ни работали, какова бы ни была сложность вашего
проекта, в этой книге вы найдете нужную информацию, она заставит вас
размышлять и поможет создать совершенный код. Книга состоит из 35 глав,
предметного указателя и библиографии.


АКИ>Авторы:

АКИ> Odi$$ey
АКИ> orangy

АКИ>Аннотация:

АКИ>Пишите код исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живете.

Раз уж такую старую тему подняли, то добавлю и свои пару копеек. Решился на прочтение книги после недавней темы '{' и java
Автор: Нэчер
Дата: 29.05.08
(в которой утверждалось
Автор: _FRED_
Дата: 29.05.08
, что МакКоннелл что-то убедительно доказывал по поводу форматирования кода). Прочитать полностью не смог -- по ходу чтения просто убивал низкий процент полезной информации по отношению к объему текста. Т.е. читаешь-читаешь-читаешь-читаешь, а в сухом остатке чуть-чуть.

Пожалуй, единственное приятное открытие из прочитанного в МакКоннелле -- это контрольный список вопросов для определения качества требований к проекту (врезка на страницах 39-41). Настолько сильно отличается от всего остального материала, что невольно задумываешься о плагиате МакКоннелла


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Стив Макконнелл. Совершенный код. Цитатник
От: igna Россия  
Дата: 07.07.08 09:40
Оценка:
Здравствуйте, SeRya, Вы писали:

SR>... книги такого объема с экрана читать тяжело.


Зато цитировать легко. Так-что смысл иметь электронную копию все же есть.
Re[5]: Стив Макконнелл. Совершенный код. Цитатник
От: CreatorCray  
Дата: 07.07.08 10:46
Оценка:
Здравствуйте, igna, Вы писали:

I>Зато цитировать легко. Так-что смысл иметь электронную копию все же есть.

+ поиск
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Одна из лучших книг по програмированию.
От: minorlogic Украина  
Дата: 07.07.08 11:49
Оценка:
Очень много практики , показывает в какую сторону необходимо думать при написании кода.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Одна из лучших книг по програмированию.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 07.07.08 12:37
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Очень много практики , показывает в какую сторону необходимо думать при написании кода.


Жалко, при этом, что сам автор не сильно думал, когда приводил в книге свои рассуждения. Например, стр.393 "Обработка ошибок и операторы goto". Он приводит пример программы на VB в которой goto используется для удаления файлов перед выходом из функции. И дает три способа избавления от goto: переписывание с помощью вложенных операторов if, переписывание с помощью статусной переменной, переписывание с помощью try-finally. Но не дает еще одного простого способа: вынесения части логики в отдельную функцию с тем, чтобы получилось что-то вроде:
Sub PurgeFiles(...)
  ...
  MakePurgeFileList( fileList, numFilesToPurge )
  FindAndOverwriteFiles( ... )
  DeletePurgeFileList( fileList, numFilesToPurge )
End Sub


Видя такой подход не очень верится в профессионализм автора, соответственно доверие к его советам сильно уменьшается.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Одна из лучших книг по програмированию.
От: elmal  
Дата: 07.07.08 12:52
Оценка: +3
Здравствуйте, eao197, Вы писали:

E>Видя такой подход не очень верится в профессионализм автора, соответственно доверие к его советам сильно уменьшается.

А не надо никому никогда доверять . Дает советы, дает аргументацию. Согласен с аргументацией — принимай к сведению. Не согласен, имеешь контраргумент — не используй. Всегда надо подвергать мнения любых авторитетов сомнению. Главное, что в книге достаточно и аргументов, и советов. Причем весьма неплохих.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.