Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save chuckis/3bb21293802a42467f0afb561f4b19ee to your computer and use it in GitHub Desktop.
Save chuckis/3bb21293802a42467f0afb561f4b19ee to your computer and use it in GitHub Desktop.
Ключевые моменты из книги Стива Макконнелла "Совершенный код"

Часть 1. Основы разработки ПО

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

Часть 2. Высококачественный код

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

ГЛАВА 9 Процесс программирования с псевдокодом

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

Часть 3. Переменные

Неграмотная инициализация данных часто приводит к ошибкам. Описанные в этой главе способы инициализации позволят избежать проблем, связанных с неожиданными первоначальными значениями переменных. Минимизируйте область видимости каждой переменной. Группируйте обращения к переменным. Старайтесь делать переменные локальными для методов или классов. Избегайте глобальных данных. Располагайте команды, использующие одни и те же переменные, как можно ближе друг к другу. Раннее связывание ограничивает гибкость, но минимизирует сложность программы. Позднее связывание повышает гибкость, но за это приходится расплачиваться повышенной сложностью. Используйте каждую переменную исключительно с одной целью.

Часть 4. Операторы

Упрощение и облегчение чтения логических выражений вносит существенный вклад в качество вашего кода. Глубокая вложенность затрудняет понимание метода. К счастью, вы сравнительно легко можете ее избежать. Структурное программирование — это простая, но все еще злободневная идея: вы можете построить любую программу с помощью комбинации последовательностей, выборов и итераций. Уменьшение сложности — ключ к написанию высококачественного кода.

Часть 5. Усовершенствование кода

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

Часть 6. Системные вопросы

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

Часть 7. Мастерство программирования

Способность к написанию программ напрямую зависит от личного характера. Важнейшие качества программиста — скромность, любопытство, профессиональная честность, творчество и дисциплина, а также «просвещенная» лень. Чтобы стать отличным программистом, можно не обладать особым талантом, но необходимо постоянно стремиться к самосовершенствованию. Удивительно, но интеллект, опыт и настойчивость вредят программистам не меньше, чем помогают. Многие программисты не ведут активного поиска новых сведений и методик, а полагаются на случайные столкновения с новой информацией на работе. Если вы посвятите небольшую долю своего времени чтению книг и изучению программирования, через несколько месяцев вы будете намного превосходить почти всех своих коллег. Хороший характер во многом — продукт правильных привычек. Если хотите стать великолепным программистом, выработайте правильные привычки, а все остальное придет само собой.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment