5 книг по шаблонам проектирования для разработчиков


Оглавление (нажмите, чтобы открыть):

ForCoder

Книги о проектировании и разработке ПО, скачать бесплатные книги, самоучители и учебники о проектировании и разработке ПО в хорошем качестве

Автор: Krzysztof Cwalina, Brad Abrams

Издательство: Addison-Wesley Professional

Описание книги Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries: Framework Design Guidelines, Second Edition, teaches developers the best practices for designing reusable libraries for the Microsoft .NET Framework. Expanded and updated for .NET 3.5, this new edition focuses on the design issues that directly affect the programmability of a class library, specifically its publicly accessible APIs.

This book can improve the work of any .NET developer producing code that other developers will use. It includes copious annotations to the guidelines by thirty-five prominent architects and practitioners of the .NET Framework, providing a lively discussion of the reasons for the guidelines as well as examples of when to break those guidelines.

Microsoft architects Krzysztof Cwalina and Brad Abrams teach framework design from the top down. From their significant combined experience and deep insight, you will learn:

The general philosophy and fundamental principles of framework design

Naming guidelines for the various parts of a framework

Guidelines for the design and extending of types and members of types

Issues affecting–and guidelines for ensuring–extensibility

How (and how not) to design exceptions

Guidelines for–and examples of–common framework design patterns

Guidelines in this book are presented in four major forms: Do, Consider, Avoid, and Do not. These directives help focus attention on practices that should always be used, those that should generally be used, those that should rarely be used, and those that should never be used. Every guideline includes a discussion of its applicability, and most include a code example to help illuminate the dialogue.

7,586 просмотров всего, сегодня нет просмотров

Head First Software Development

  • Автор: Dan Pilone and Russ Miles
  • Издательство: O’Reilly Media
  • Год: 2008
  • Язык: Английский
  • Страниц: 496
  • Формат: pdf
  • Размер: 33 МБ

Описание книги Head First Software Development:
Even the best developers have seen well-intentioned software projects fail — often because the customer kept changing requirements, and end users didn’t know how to use the software you developed. Instead of surrendering to these common problems, let Head First Software Development guide you through the best practices of software development. Before you know it, those failed projects will be a thing of the past.

With its unique visually rich format, this book pulls together the hard lessons learned by expert software developers over the years. You’ll gain essential information about each step of the software development lifecycle — requirements, design, coding, testing, implementing, and maintenance — and understand why and how different development processes work.

This book is for you if you are:

  • Tired of your customers assuming you’re psychic. You’ll learn not only how to get good requirements, but how to make sure you’re always building the software that customers want (even when they’re not sure themselves)
  • Wondering when the other 15 programmers you need to get your project done on time are going to show up. You’ll learn how some very simple scheduling and prioritizing will revolutionize your success rate in developing software.
  • Confused about being rational, agile, or a tester. You’ll learn not only about the various development methodologies out there, but how to choose a solution that’s right for your project.
  • Confused because the way you ran your last project worked so well, but failed miserably this time around. You’ll learn how to tackle each project indiv >

5,457 просмотров всего, сегодня нет просмотров

Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET

Описание книги Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и .NET:
Эта книга о разработке корпоративных программных приложений в среде .NET с применением шаблонов проектирования. В ней описаны: проблемно-ориентированные методы проектирования (DDD, или Domain Driven Design), разработка посредством тестирования (TDD, или Test-Driven Development), объектно-реляционное преобразование, т.е. методы, которые многие относят к ключевым технологиям разработки программного обеспечения.

По мере развития и усложнения технологии все большее значение приобретают вопросы правильного применения методов проектирования. Ценность этой книги в том и состоит, что она помогает разобраться в этих вопросах. Хотя большинство примеров кода представлено на языке С#, материал книги может оказаться полезным и для тех, кто работает на платформе Java.

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

8,520 просмотров всего, 2 просмотров сегодня

Разработка и стандартизация программных средств

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

Прокомментированы основные положения Государственного стандарта ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств».

5,490 просмотров всего, сегодня нет просмотров

Технология разработки программных продуктов. Учебное пособие

Описание книги Технология разработки программных продуктов. Учебное пособие:
В этом учебном пособии рассмотрены история зарождения, прогрессивное состояние, основы организации, главные положения и перспективы развития технологии разработки программных продуктов. Для студентов образовательных учреждений среднего профессионального образования.

1. Жизненный цикл программного продукта
2. Основные этапы работы по созданию программного продукта
3. Модели жизненного цикла разработки программного продукта
4. Организация процесса разработки программного продукта
5. Метрики
6. Планирование работ по созданию программных продуктов
7. Управление требованиями к программному продукту
8. Проектирование программного продукта
9. Этап разработки программного продукта
10. Тестирование программного продукта
11. Сопровождение программного продукта
12. Управление поставками программных продуктов
13. Обеспечение надежности программных продуктов
14. Основные понятия и назначение языка UML

14,465 просмотров всего, 2 просмотров сегодня

Приемы объектно-ориентированного проектирования. Паттерны проектирования

Описание книги Приемы объектно-ориентированного проектирования. Паттерны проектирования:
В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи.

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

Паттерны были систематизированы только в 2000-2001 году — это последнее слово в науке проектирования. Содержит множество концептуально изящных и универсальных приемов, позволяющих облегчить процессы построения программ. Книгу рекомендуют такие авторы как Эккель, Шилдт.

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

20,037 просмотров всего, 7 просмотров сегодня

Сколько стоит программный проект

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

Автор этой книги является также автором всемирно известного бестселлера «Совершенный код».

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

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

10,783 просмотров всего, 1 просмотров сегодня

Agile Software Development

Описание книги Agile Software Development:
Software development paradigms are shifting. The development group’s «team» ability, and the effects of the individual developer, become more important as organizations recognize that the traditional approach of increasing process pressure and overworking team members is not meeting getting the job done. The pioneers of Agile methodologies question the preconceived processes within which development teams work. Rather than adding to the burden of the individual developer, Agile asks «how can we change the process so that the team is more productive, while also improving quality?» The answer is in learning to play the «game.»

Written for developers and project managers, Agile Software Development compares software development to a game. Team members play the game knowing that the ultimate goal is to win—always remembering what they have learned along the way, and always keeping in mind that they will never play the same way twice. Players must keep an open mind to different methodologies, and focus on the goal of developing quality software in a short cycle time.

3,490 просмотров всего, 1 просмотров сегодня

Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию

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

Книга предназначена как для профессиональных разработчиков ПО, так и для студентов, изучающих основы ООП.

Часть I. Введение в разработку объектно-ориентированного программного обеспечения
1. Объектно-ориентированная парадигма
2. UML — унифицированный язык моделирования

Часть II. Ограниченность традиционного объектно-ориентированного проектирования
3. Проблема, требующая создания гибкого кода
4. Стандартное объектно-ориентированное решение

Часть III. Шаблоны проектирования
5. Первое знакомство с шаблонами проектирования
6. Шаблон Facade
7. Шаблон Adapter
8. Расширение горизонтов
9. Шаблон Bridge
10. Шаблон Abstract Factory

Часть IV. Практическое применение шаблонов проектирования
11. Как проектируют эксперты
12. Решение задачи САПР с помощью шаблонов проектирования
13. Обработка возможных вариаций с помощью шаблонов проектирования

Часть V. Обработка вариаций с применением шаблонов проектирования
14. Шаблон Strategy
15. Шаблон Decorator
16. Шаблоны Singleton и Double-Checked Locking
17. Шаблон Observer
18. Шаблон Template Method
19. Шаблон Factory Method
20. Матрица анализа

Часть VI. Завершение и начало
21. Шаблоны проектирования и новый взгляд на объектно-ориентированное проектирование
22. Библиография

11,722 просмотров всего, 3 просмотров сегодня

Применение шаблонов проектирования. Дополнительные штрихи

Описание книги Применение шаблонов проектирования. Дополнительные штрихи:
Данная книга предназначена для разработчиков программного обеспечения, использующих в своей работе шаблоны проектирования. Шаблоны по праву считаются сегодня одной из наиболее популярных концепций объектно-ориентированного программирования. В этой книге на многочисленных примерах рассматриваются важные аспекты применения шаблонов проектирования, которые не были должным образом освещены в знаменитой книге `Design Patterns`(Джон Влиссидес является одним из ее соавторов).

Здесь представлены вариации уже известных шаблонов, а также новые шаблоны. Кроме того автор изложил свое понимание процесса разработки шаблонов и предложил ряд рекомендаций начинающим разработчикам. Книга предназначена для специалистов и предполагает определенный уровень знакомства с шаблонами проектирования и языком C++.

Глава 1. Введение
Глава 2. Проектирование при помощи шаблонов
Глава 3. Темы и вариации
Глава 4. Муки творчества
Глава 5. Разработка шаблонов: семь правил успеха

4,861 просмотров всего, сегодня нет просмотров

5 книг по шаблонам проектирования для разработчиков

Вас пригласили на собеседование. Рубашка выглажена, телефон на беззвучном, во рту две подушечки мятной жвачки — вы почти готовы. Осталось показать потенциальному работодателю, что вы ещё и исключительно умный молодой человек. Или девушка — тут уж как получится.

Единственная проблема — стать умным за 30 минут до собеседования невозможно. Нужны годы тренировок. Месяцы. Или хотя бы неделю до собеседования нужно потратить на штудирование проф-литературы. Не факт, что вы сразу же чему-то научитесь, но руководитель оценит старания.

Мы подготовили список литературы для людей, которые хотят влиться в IT-сферу, но не знают, с какой стороны к ней подступиться. Для тех, кто пришел на собеседование, провалился и не хочет повторений. И для тех, кто решил закрепить уже имеющиеся навыки.

Эти книги мы читаем сами и советуем стажёрам. А в списке для разработчиков есть даже парочка курсов, потому что им важно и на словах, и на деле быть Львом Толстым, а не. Ну вы сами знаете.

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

Кажется, самое время для толстого намёка, что мы набираем стажёров 🙂

Книги о проектировании и разработке программного обеспечения

Шаблоны проектирования

Э. Гамма Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес. – СПб.: Питер, 2009. – 366 с.

Классическая и наиболее известная книга о шаблонах проектирования. Описание каждого шаблона достаточно подробное, обычно содержит несколько вариантов реализации с их слабыми и сильными сторонами. Примеры в книге приведены на C++ и Smalltalk, однако словесное описание и UML диаграммы помогут разобраться программистам на других языках. Рекомендую посмотреть книгу всем без исключения будущим программистам.

Джейсон Мак-Колм Смит Элементарные шаблоны проектирования : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2013. — 304 с.

Книга Мак-Колма более похожа на научный труд, чем на учебник, однако, является достаточно интересной и полезной. В первую очередь рассматриваются элементарные шаблоны — такие, как делегирование, наследование, рекурсия. Затем, показывает как из элементарных шаблонов построить более сложные — при этом шаблоны рассматриваются крайне подробно. Достаточно полезной показалась система обозначений PIN (Pattern Instance Notation), разработанная автором в качестве расширения UML. PIN используется на протяжении всей книги, т.к. позволяет элегантно отображать зависимости между паттернами, не вникая в детали их реализации. В конце приводится описание \(\rho\)-исчисления, являющегося формальной теорией, лежащей в основе шаблонов проектирования. Я рекомендую посмотреть книгу всем программистам, которые этого еще не сделали — будет интересно.

Влиссидес Джон. Применение шаблонов проектирования. Дополнительные штрихи. : Пер. англ. М.: Издательский дом «Вильямс

Хорошее дополнение к книге Гаммы и Хелма с несколько другим способом изложения и местами более интересными примерами. Начинается книга с заблуждений о шаблонах — далеко не все, особенно студенты, понимают как ими пользоваться. По ходу книги автор ставит перед читателем ряд проблем и всякий раз выполняет поиск подходящих шаблонов проектирования, при этом приводится даже некоторый алгоритм выполнения такого поиска. Первым примером книги является проектирование файловой системы (с сущностями «Файл», «Каталог», «Ярлык»), на нем рассматриваются паттерны Composite, Proxy (для реализации «Ярлыка» файла — этот пример сильно отличается от того, что приведено в GoF), Visitor (тоже очень удачное применение) и Template Method (в контексте рефакторинга и инверсного управления). Затем, в пример добавляется владелец файла, но пользователей нужно создавать, а еще они объединяются в группы. На примере системы управления пользователями рассматриваются шаблоны Singleton и Mediator (для связи пользователей с группой «многие ко многим»). В конце второй главы приводится хорошая диаграмма «pattern: role annotation». В третьей главе рассматриваются тонкости и проблемы реализации шаблонов — начинаются с Singleton-а (проблема с зависимостями между несколькими Одиночками, параллельным программированием и освобождением памяти из под них). Затем также рассматривается Observer и Visitor (на мой взгляд, выбран слишком примитивный пример с построением графического интерфейса из двух полей ввода и кнопкой). В конце главы описывается «нестандартный» шаблон Generaton Gap — лично я про него читал впервые, применить вы его сможете лишь в тех случаях если ваша система генерирует исходный код программ, рассматривается он на примере генератора пользовательского интерфейса (типа Qt Designer), но отмечается что нечто подобное используется в YACC. Цель паттерна Generaton Gap — убрать зависимость между сгенерированным системой кодом и тем, что дописывает потом вручную пользователь, для этого предлагается, казалось бы очевидное решение — генерируемый код помещается в базовый класс, который пользователь может наследовать для увеличения функциональности (хотя я бы рассмотрел также вариант с композицией). Последним примером книги является система обработки событий (Event), при этом ставится проблема — типов событий много, но, получив событие, мы не хотим выполнять кучу dynamic_cast для установления его типа. На этом примере описаны шаблоны Mulicast и Typed Message — лично мне это показалось бесполезным. В конце книги приводится рекомендации по разработке шаблонов проектирования (семь правил, которые помогут вам придумать новый шаблон) — я бы назвал это правилами по изучению шаблонов (советую прочитать). В целом, хорошая книга, но с плохим переводом (очень много явных ляпов) и местами устаревшая (т.к. примеры написаны на С++, который развивался и сильно изменился, а книга старая) — например не совсем правильно подмечены недостатки Singleton-а Маерса и описан неактуальный подход с Double-Clecked Locking (хотя для истории и кругозора может пригодится).

Тепляков С. В. Паттерны проектирования на платформе .NET – СПб.: Питер, 2015. – 320 с.

Замечательная книга от разработчика компании Microsoft и известного в узких кругах блогера (до выпуска книги Сергей много писал на тему паттернов проектирования на своем сайте). Не смотря на то, что в названии фигурирует .NET, книга будет полезна всем без исключения разработчикам (в книге Гаммы тоже приводятся примеры на Smalltalk, но это не мешает ей быть классикой). Главы книги можно читать в любом порядке, т.к. они не связаны друг с другом — как и в книге Гаммы разделение по главам осуществляется на основе типов паттернов (паттерны поведения, порождающие паттерны, структурные паттерны), кроме того, есть глава посвященная принципам SOLID. Рассматриваются вопросы unit-тестирования в контексте применения шаблонов проектирования.

UML и объектно-ориентированный анализ

Буч Градди Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд. / Буч Градди, Максимчук Роберт А., Энгл Майкл У., Янг Бобби Дж., Коналлен Джим, Хьюстон Келли А.: Пер с англ. — М.: ООО «И.Д. Вильямс», 2010. — 720 с.

Классическая книга по программированию от очень авторитетного автора. В книге есть множество интересных и важных для программиста вещей, но они обильно разбавлены рассуждениями на отвлеченные темы и, на мой взгляд, очень неудачными примерами про теплицы. Во второй вам расскажут про общие принципы ООП; в третьей главе — дополнят некоторыми обозначениями UML и интересным разделом про качество классов и объектов; в четвертой — рассматриваются различные подходы к классификации и уточнению абстракций. Пятая глава книги содержит описание 13 видов UML диаграмм, но на мой взгляд Буч выбрал не самые лучшие примеры и недостаточно времени уделил описанию назначения этих диаграмм. Шестая глава содержит описание процесса разработки программного обеспечения, при этом выделяются макропроцесс (жизненный цикл проекта) и микропроцесс (проектирование) — для них описываются стадии с видами деятельности на каждой из них. Седьмая глава завершает изложение очень коротким описанием организационных вопросов. Вторую половину книги составляют примеры приложений (можно посмотреть в каком порядке Буч предлагает их проектировать и какие виды диаграмм использовать).
Все главы кроме пятой очень обзорные — в них нет смысла вчитываться, по этим темам написаны отдельные толстые книги. Например, про качество ПО в нескольких книгах рассуждает Роберт Мартин, а про проектирование ПО (микропроцесс) написал отдельную книгу Розенберг — при этом он использует другой подход (ICONIX). Очень часто долгие рассуждения Буча касаются очевидных вещей и как бы вы не вчитывались — не получится узнать что-то новое, поэтому я считаю, что книгу достаточно бегло просмотреть. Наиболее полезные, на мой взгляд, части книги:

  • описание элементов объектной модели во второй главе;
  • большая часть третьей главы, посвященная основам ООП;
  • описание UML в пятой главе;
  • по диагонали можно прочитать шестую главу и просмотреть несколько примеров из приложения.
Розенберг Д., Скотт К. Применение объектного моделирования с использованием UML и анализ прецедентов.: Пер. с англ. М.: ДМК Пресс, 2002

Книга посвящена разработке программного обеспечения в соответствии с процессом ICONIX, поэтому несмотря на то, что в названии фигурирует UML — рассматриваются всего 4 вида диаграмм (прецедентов, пригодности, последовательности и классов). Диаграмма пригодности не описана во многих других книгах по UML, т.к. в стандарте UML она описана в дополнении. В книге не только описываются сами диаграммы, но и процесс разработки ICONIX, который является итеративным, что оказывает влияние на процесс построения диаграмм. Каждому виду диаграммы посвящена отдельная глава, в конце которой приводится топ 10 ошибок — это тоже очень полезная и интересная часть. Книга в 7 раз тоньше произведения Буча, а полезной информации, на мой взгляд, в ней больше.


Буч Г., Рамбо Д., Джекобсон А. Язык UML Руководство пользователя — С-П.: Издательство «Питер», 2010 — 432 с.

Долгое время единственной действительно хорошей книгой, посвященной объектно-ориентированному анализу и проектированию, была книга Буча, в которой рассматривалась его нотация. Основываясь на ней, конечно же, можно было понять UML, но почему-то лишь немногие были на это способны. В тоже самое время, иногда появлялись какие-то журнальные статьи, в которых упоминался UML. Обычно эти статьи не отличались подробностью и просто пересказывали то, что когда-то услышал автор по этой теме. Вообще, это происходит потому, что практикующие пользователи UML редко когда пишут статьи.

Практически каждый программист слышал словосочетание Rational Rose, но обычно плохо себе представляет что это такое. Мало того, традиционна следующая ситуация: программист что-то услышал о программном продукте, с радостью его установил себе на компьютер (давайте не будем уточнять, как он достал себе копию), запустил программу… а она оказалась совсем не похожей на WinWord. Т.е., как нарисовать стрелку ясно, а что за ней стоит и как это потом использовать — непонятно.

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

Так вот, эта книга, является одной из трех книг, написанных создателями UML. Это полное изложение UML, позволяющее читателю изучить его и приступить к практическому использованию. В книге не рассматриваются принципы объектно-ориентированного анализа, поэтому от читателя потребуется знакомство с ним (например, по соседней книге Буча).

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

Итог:
Книга, несомненно, достойна того, что бы ее прочитали хотя бы для ознакомления с нотацией. Она не является основополагающей, как «Объектно-ориентированный анализ и проектирование» Гради Буча, но все равно достаточно интересна.

Чистый код и рефакторинг

Мартин Р. Чистый код. Создание, анализ и рефакторинг. Библиотека программиста. — СПб.: Питер, 2014. — 464 с.

Книга посвящена вопросам написания программного кода, который легко поддерживать — обсуждаются не только стили кодирования, форматирования, но и, например, структура хорошего кода, юнит-тестирование, использование исключений. В контексте чистого кода описываются некоторые шаблоны проектирования. Альтернативой можно считать книгу Фаулера (она также посвящена чистому коду), но Роберт Мартин пишет гораздо интереснее. Рекомендую прочитать книгу всем студентам, прошедшим курс объектно-ориентированного программирования.

Фаулер М. Рефакторинг. Улучшение существующего кода/ М. Фаулер. Символ-Плюс, 2008. 432 с.
Аллен Э. Типичные ошибки проектирования / Э.Аллен: Пер. с англ. – СПб.: Питер, 2003. – 224 с.

Книги Мартина Фаулера и Эрика Аллена посвящены чистому коду и рефакторингу, но в отличии от книги Боба Мартина, в них делается попытка каталогизации видов рефакторинга (у Фаулера) или ошибок (у Аллена). Если вы разрабатывали что-то чуть-чуть сложнее тетриса — то книги читаются быстро т.к., значительная часть материала вам и так знакома. Книги стоит пролистать, бегло найти интересные моменты и посмотреть их более детально. Покупать их не стоит (я взял на работе почитать), вряд-ли вы будете это перечитывать. С другой стороны, знакомый тимлид требует от работников при рефакторинге указывать конкретный вид (название берется из каталога вот этой книги) в комментарии к коммиту в репозитории. Из книги Аллена мне больше всего понравились главы 2, 3 и 22 — в них можно кое-что узнать об экстремальном программировании, спецификации и тестировании, а также прочитать краткое (но достаточное) описание «паттернов проектирования для отладки». Советую читать именно эти главы.

Другое

Чакон Скотт, Страуб Бен Git для профессионального программиста. — СПб.: Питер, 2020. — 496 с.: ил.

В книге автор рассказывает про систему контроля версий «git», при этом делает это не поверхностно (как многочисленные статьи в интернете), а очень подробно. Главы выстроены таким образом, чтобы читатель сразу мог начать пробовать некоторые команды git, а затем узнавать про различные варианты их использования. Очень помогает читать обилие иллюстраций к примерам. Книга настолько полно описывает git, что после нее по этой теме можно читать только stack overflow (какие-то конкретные вопросы все равно будут возникать), но вы будете уметь работать в команде, использующей git, выбирать оптимальный вариант использования git для своей команды, настраивать git на сервере и т.д.

С. Бобровский Технологии Пентагона на службе российских программистов. Программная инженерия. — СПб.: Питер, 2003. — 222 с.: ил.

Основная проблема, обсуждаемая в книге — ошибки в программах. В контексте проблемы рассматриваются модели разработки ПО и управления проектами и языки программирования. Книга состоит из четырех глав:

  1. Очень коротко описываются подходы, позволяющие повысить качество продукта (в т.ч. сократить число ошибок): гибкие практики (Agile), развитие качеств программиста — профессиональные и личностные качества, особое внимание уделяется обучению и мотивации.
  2. Описание истории развития языков программирования. Акцент делается на влияние на этот процесс спец. служб в 20 веке. Кроме того, много написано о том, что большая база кода на устаревших языках мешает забыть о них и, следовательно, препятствует развитию более совершенных языков.
  3. Очень коротко описываются подходы к управлению процессом разработки ПО — такие как C/SCSC и CMM. В частности это процессы управления рисками (превышения бюджета проекта или сроков). Из главы можно узнать о сути предлагаемого подхода их достоинствах и недостатках. Чтобы использовать методики информации недостаточно, к сожалению в книге нет ссылок на литературу, где эту информацию можно получить.
  4. Описаны 2 японских проекта связанных с разработкой систем параллельной обработки данных. Более подробного описания проекта ЭВМ 5 поколения на русском языке я не встречал.

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

Брукс, Ф. Мифический человеко-месяц или как создаются программные системы / Ф. Брукс. — М.: СПб: Символ-Плюс, 2020. — 304 c.

Эта книга не о программировании на конкретном языке. В ней очень ясным, живым языком рассказывается о тех выводах, к которым пришел автор в процессе руководства работы над операционной системой OS/360. Некоторые моменты, конечно же, устарели; например, проблема машинного времени уже не стоит в таком остром ракурсе перед программистами (во всяком случае, в большинстве проектов). Тем не менее, общие рекомендации по обеспечению работы большой группы программистов очень сложно переоценить. Например, вы можете сразу же ответить, что лучше: тысяча посредственных программистов, сто хорошиих или десять гениев? Имеется в виду, для реализации очень крупного проекта в разумное время. Я не говорю о том, что в книге есть ответ на этот вопрос — в книге есть очень полезные мысли на эту тему, которые пригодятся вам при начале работы и наборе сотрудников.

«Мифический человеко-месяц» — это, судя по тому что это выражение вынесено в название, для Брукса самый важный момент в книге. Брукс пишет о том, что нельзя мерять время выполнения проекта просто линейно считая, что если один человек сделает его за сто лет, то сто человек сделают его за один год.

От первого издания отличается тем, что в него добавлена статья «Серебряной пули нет», в которой Брукс двадцать лет назад предупреждал о том, что в течение этих лет в программировании ничего революционного не произойдет и статьей, которая была написана специально для второго издания. Эта статья посвящена актуальным аспектам проектирования и ответу на вопрос о том, почему же «Мифический человеко-месяц» до сих пор остался современным.

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

Книги по разработке игр и приложений

Разработка игр, программирование, работа с сайтами и библиотеками, а также изучение всевозможных языков С++, JavaScript и С# предполагает собой постоянное обучение чему-то новому. Технологии сейчас уж точно не стоят на месте, и с каждой новой презентацией мировые компании представляют миру совершенно новые тренды разработки и контента.

Не так давно виртуальная реальность была лишь корпоративным продуктом, но динамично обновляющийся игровой мир диктует свои правила. Теперь VR-очки выступают полноценным игровым элементом. А топовые игры адаптируют графику и управление под модный тренд. Интересно, технологии Google Glass смогут так же внедриться в игровой мир? Или они не выйдут за рамки обычного носимого устройства?

Находясь по ту сторону барикад, нужно понимать, что помимо разработки игр, нужно уделять время обучению новым технологиям. Геймеры и киберспортсмены постоянно следят за новостями относительно новых возможностей и технологий игрового мира. Поэтому, на плечах разработчиков лежит ответственная миссия по быстрому обучению всем новым, а также уже имеющимся технологиям. Если вы новичок в разработке игр, для вас найдется список настольных must have книг. Для опытного разработчика, который смело экспериментирует с 3D графикой, также можно выделить достойные сборники по геймдеву.

Книги по разработке мобильных приложений Android и iOS

Мы собрали лучшие, по нашему мнению книги, благодаря которым вы сможете взглянуть на мир разработки контента под другим углом. Мобильные платформы на сегодняшний день смело вытесняют компьютеры. Только с 2015 года показатель активности ОС Android и iOS возрос на 84%. Разработчики и мировые компании не теряют времени напрасно, и смело выпускают топовые игры или 5-ти минутные ранеры на мобильные устройства. Мы не могли не уделить внимание книгам для разработки Android и iOS контента.

1. «Привет, Андроид»
Из книги можно почерпнуть сведения об основах платформы Андроид от элементарного приложения «Привет, Мир!» до 2D и 3D графики. В завершение автор поделится полезной информацией о SQLite и инструкцией по публикации контента в Google Play.

2. «Learning Java»
Учебник для «чайников» об основных тонкостях Java, которые пригодятся, чтобы грамотно разрабатывать игры. Обучение проходит на примере создания игр для Андроид. Кроме того подробно рассматривается пиксельная графика, SFX и GFX, анимация и другое.

3. «Beginning Android Games»
Кратко и по делу написанная информация, которая поможет разобраться в графических движках и адаптации игр под разные платформы. Учебник будет полезен как для начинающих, так и для специалистов. Советуем внимательно читать теорию и коды, потому что в некоторых намеренно сделаны ошибки.

4. «Разработка игр для андроид»
Именно эта книга должна стать для вас настольной, если вы начинающий разработчик игр. Благодаря ей вы узнаете о том, как создать и реализовать через C и С++ мобильное приложение. OpenGL ES и система распознавания жестов — обо всем можно узнать из этой книги.

5. «Android Design Patterns»
Больше 50 основных паттернов, которые научат преобразовывать основные нюансы поиска, отбора, фильтров и другого. Шаблоны программирования, двенадцать примеров прокачают ваш скилл и помогут избежать ошибок в создании игр. Книга оснащена иллюстрациями, что делает ее понятной для каждого.

6. «Профессиональная разработка приложений Андроид»
Книга немного устарела, ведь она была издана в 2012 году, но раздел по Android SDK будет очень полезен для начинающих. Кроме того книга отлично систематизирована и разделена на отдельные темы, поэтому легко можно выбрать необходимое. Очень удобно, что книга официально изданы на русском языке.

7. «Mobile Game Development with Unity»
Книга ответит на вопрос о том, как разработать игры для iOS и Android с помощью движка Unity. Примеры из реальных сценариев для игр помогают лучше понять теорию.

Книги по разработке на платформу iOS:

Нельзя оставить в стороне и платформу iOS, ведь на сегодняшний день она очень востребована и скорей всего скоро займет лидирующие позиции.

1. «Разработка игр»
Книга — аналог учебника «Привет, Андроид». Она расскажет о том, как справляться с Game Center и App Store, как создавать уникальные приложения с помощью SptiteKit и Swift. Для усваивания материала, желательно знать самое основное про разработку.

2. «Swift Essentials» и «Swift Programming»
Созданные для новичков, книги откроют азы Swift и методы работы с ним.

3. «iOS 11 Swift Programming Cookbook»
Учебник, подробно рассказывающий об особенностях основных версий iOS. Книга будет полезна и начинающим, и опытным программистам для более глубоких познаний в области разработки для этой операционной системы.

4. «Swift 3 Разработка игр»
Анимация, графический дизайн и синхронизация. Грамотно нописанный код поможет разобраться в нюансах работы с SpriteKit и Swift.

5. «iOS Swift Game Development Cookbook»
Учебник, который учит OpenGL и SpriteKit, а также 2D и 3D алгоритмам. Подробно разобраны ошибки в разработке игр на iOS и нюансы работы с UIKit Detect.

6. «Изучение создания игр для iOS»
Учебник о главных секретах создания приложений с помощью Unreal Engine для iOS. Чтобы пользоваться UE4 для разработки игр, вам обязательно надо подружиться с этой книгой.

Список книг еще можно продолжать. Вы можете составить собственный перечень, который будет соответствовать платформе, жанру и тем навыкам, которыми вы владеете.

Книги о разработке игр на ПК

Создание игр на ПК под силу лишь профессионалу. Разные жанры требуют соответствующих сценарных, художественных и дизайнерских навыков, а также знаний о языках CSS и JavaScript, и движках Unity и Unreal Engine. Все это очень сложно и вряд ли возможно, если браться за это одному человеку.

Но именно профессионализм помогает создать действительно достойное приложение. Вот некоторые наиболее полезные книги, которые помогут научиться создавать игровой интересный контент. Большое количество книг написаны на английском языке, поэтому стоит осваивать не только язык в IT-сфере, но и приступить к изучению иностранного. Представляем вашему вниманию книг-справочников на русском языке.

1. «DirectX: продвинутая анимация»
В этой книге раскрыты нюансы 3D анимации при работе с DirectX. Здесь подробно рассмотрены принципы работы различных текстур и шейдеров с элементами анимации.

2. «Разработка и отладка шейдеров»
Графические и звуковые эффекты станут вам под силу благодаря этой книге. Если вы ищите необычные и интересные эффекты — это пособие для вас.

3. «Искусственный интеллект в компьютерных играх»
Книга научит вас работать с разумными героями, которые смогут реагировать на окружающую среду. Пособие содержит в себе как теорию, так и практические советы.

4. «Психология оптимального переживания»
Учебник, который рассказывает, как достичь счастья геймеру. Если уловить все нюансы, можно создать игру, которая станет любимчиком многих геймеров.

5. «Маркетинг игр»
Пиар и продвижение собственного приложения — это станет понятным и доступным после прочтения книги, даже если вы не знакомы со значением слов «таргет», «SMM» и «конверсия». Книга написана доступно и понятно даже для новичка.

Русскоязычный каталог на этом, к сожалению, заканчивается. Однако, ступив одной ногой в IT, а другой — в геймдизайн, вы должны осознавать, что без английского языка вам будет очень сложно. Поэтому, кроме изучения языков программирования, рекомендуем уделить внимание курсу English Upper Intermediate.

Книги для разработки на Unity

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

1. «Unity Game Development за 24 часа»
Двадцать четыре главы — ровно столько частей книги и столько же часов понадобится для того, чтобы разобраться в этом движке. Автор утверждает, что эта книга поможет вам создать мощное портфолио, да и пособие написано очень доступно и понятно.

2. «Unity for Absolute Beginners»
Учебник для начинающих в деле Unity для ознакомления с его нюансами. Пособие гарантирует получение основных знаний по этой теме.

3. «Unity 2D Game Development»
Книга научить создавать игру 2D с помощью 3D. Подробно описаны в пособии особенности движка Unity.

4. «Learn Unity3D Programming with UnityScript»
Учебник расскажет о возможностях движка Unity для создания 2D и 3D приложений. Книга разъяснит все нюансы про различные эффекты этого движка. Понравится как начинающим, так и профессионалам.

Ну и напоследок информативные книги по разработке игр.

Здесь нужно сообщить о действительно полезных пособиях для разработчиков. Эти книги поменяют ваше представление о создании игр.

1. «Mathematics for 3D Game Programming»
Если вы создаете 3D контент, это пособие поможет вам в расчетах для программирования.

2. «Networking and Online Games»
Пособие рассказывает о нюансах сетей и мультиплеере в играх.

3. «Физика для создателей игр»
Книга-помощник для разработчика. Пособие, в котором рассказывается о физических явлениях для каждого игрового элемента.

4. «GPU Gems»
Пособие для профессионалов. Рассказывает в мельчайших подробностях об GPU и GPGPU.

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

Идеальная подборка книг для разработчиков

В этой статье представлены более 100 лучших книг для разработчика по мнению ведущего американского специалиста Йогева Ситтона. Следующий список книг…

Популярные технологии разработки

Design Patterns: Elements of Reusable Object-Oriented Software (Приёмы объектно-ориентированного проектирования. Паттерны проектирования)

Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидс

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

Code: The Hidden Language of Computer Hardware and Software (Тайный язык информатики)

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

Working Effectively with Legacy Code (Эффективная работа с унаследованным кодом)

Майкл Физерс

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

Командная разработка

Peopleware: Productive Projects and Teams (Человеческий фактор: успешные проекты и команды)

Том ДеМарко, Тим Листер

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

Patterns of Enterprise Application Architecture (Архитектура корпоративных программных приложений)

Мартин Фаулер

Научитесь избегать частых ошибок в работе с кодом. Книга изобилует примерами того, когда лучше использовать (или не использовать) тот или иной паттерн. Ее визитная карточка – это каталог шаблонов весьма серьезного уровня.

Introduction to Algorithms (Алгоритмы: построение и анализ)

Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн

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

Рефакторинг и оптимизация

Clean Code: A Handbook of Agile Software Craftsmanship (Чистый код. Создание, анализ и рефакторинг)

Роберт Мартин

Книга, делящая ваш мир кодинга на «до» и «после». Единственная в своем роде. Лучший способ избавиться от вредных привычек в программировании.

Refactoring: Improving the Design of Existing Code (Рефакторинг: улучшение существующего кода)

Мартин Фаулер

С развитием объектно-ориентированных языков программирования появилась более серьезная проблема – разработчики. Научитесь избавляться от ненужного и экономить свое время и время других. Необходимо к прочтению тем, кто хочет улучшить уже написанный код.

Философия кодинга

The Mythical Man-Month (Мифический человеко-месяц, или Как создаются программные системы)

Фредерик Брукс

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

The Pragmatic Programmer: From Journeyman to Master (Программист-прагматик. Путь от подмастерья к мастеру)

Эндрю Хант, Девид Томас


Эта книга не только изменит ваши привычки при написании кода, но и вас, как программиста. Она наполнена практическими советами о том, как получить максимум от кода и вас самих. Насколько новаторская ли это книга? Достаточно, чтобы запустить целую издательскую кампанию. Если вам как-то удалось не прочитать ее, сделайте это сейчас.

Code Complete: A Practical Handbook of Software Construction

Стив МакКонелл

Книга, меняющая не только код, но и вас самих. Самое лучшее, удобное и понятное, что вы сможете найти. Окажите себе услугу и прочитайте ее как можно быстрее. Мы будем удивлены, если после этого вы не посоветуете ее всем своим коллегам-программистам

Весь список состоит из 139 книг и рекомендаций к ним. Вы можете ознакомиться с ним по ссылке.

Подписывайтесь на «Код Дурова» в Telegram и во «ВКонтакте», чтобы всегда быть в курсе интересных новостей!

Подписывайтесь на «Код Дурова» в Telegram и во «ВКонтакте», чтобы всегда быть в курсе интересных новостей!

Лучшие книги по программированию

В свое время я работал и продолжаю работать сейчас разработчиком. Начал в качестве веб-программиста в 2004 году, перешел на полный стек в 2009 году, начал разработку для iOS в 2013.

Я начал свой путь программиста с прочтения трех книг: одна была про HTML, другая – про CSS и третья, соответственно, об SQL. Прочие знания я получил из Google, Stack Overflow и блогов. Вообще, Интернет – прекрасная штука. Каждый день я прочитывал по 5 или больше тематических статьей. И, что самое главное, все эти знания были бесплатны.

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

То, что меня также интересует – это чтение различных специализированных книг. Увы, но размеры списков по типу «Обязательных к прочтению для разработчиков» выходят далеко за рамки адекватных. Ситуация со сжатым списком из этого списка также ненамного лучшая…

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

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

Конечно, прочтение всех этих книг не сделает из вас профессионального программиста, но использование того, что было выучено из книг на практике – сделает. Лично я для себя решил выработать привычку прочитывать по крайней мере одну книгу в два месяца.

Полный список содержит 139 книг. Все книги, которые вы увидите в этом списке, находятся на вершине популярности рассмотренных списков.

В этом списке вы не найдете книгу о том, как стать Java-разработчиком, но вы можете увидеть книги, которые используют язык Java для приведения практических примеров, рассматриваемых тем. Вы сможете найти книгу, направленную на один конкретный язык программирования, но которая также пригодится и для разработчиков на других языках. Также я включил здесь книги, не связанные с разработкой непосредственно, но которые в то же время считаются неплохими для развития особого «программного» мышления.

Короче говоря, без лишних слов – я рад представить:

Список лучшей литературы для разработчиков

7 упоминаний:

Паттерны проектирования: Элементы повторного использования программного обеспечения

«Классическая книга, прочтение которой ознакомит читателя с различными паттернами программного проектирования, а также раскроет некоторые секреты наиболее популярных из них.» Джон Сонмец

«Еще одно произведение классики, содержащее в себе огромную коллекцию различных паттернов программирования.» Лик Бун

Код: Скрытый язык аппаратного и программного обеспечения

«Должна быть в закладках у каждого, кто так или иначе связан с программной индустрией, не важно при этом – программист ли он али нет.» Вуди Леонхард

«После прочтения этой книги вы поймете, что на самом деле выполняет ваш код и как на самом деле этот код исполняет процессор. Это одновременно и весело, и полезно.» Джон Сонмерц

8 появлений:

Эффективная работа с правильным кодом

«Я обожаю эту книгу, так как рано или поздно в один прекрасный момент программисту придётся заниматься поддержкой и разработкой уже существующих комплексных систем.» Джейсон Роял

«Если вы принимаете участие над работой с большим объемным кодом более пяти лет, эта книга, вероятно, станет вашей новой Библией. Прочтите это и примите в свои сердца.» Джон Сонмерц

Люди: Продуктивные проекты и команды

«Эта книга оказала на меня наибольшее влияние в свое время. Пожалуй, я могу сравнить ее с эффектом от прочтения Манифеста Анти-Дилберта.» Джоел Сполски

«Если вы желаете носить гордое звание тим лидера на практике, нежели на словах – эта книга определенно для вас.» Джеф Атвуд

9 упоминаний:

Паттерны разработки корпоративных приложений

«Книга очень полезна при разработке массивных приложений, так как она предлагает детальное объяснение ситуаций, когда нужно использовать определенный программный паттерн (а когда наоборот — нет). Даже не могу назвать примерное количеств раз, сколько мне приходилось обращается к данной книге.» Род Хилтон

«Обеспечивает читателя каталогом качественных проверенных корпоративных паттернов и ситуаций, советует, когда эти самые паттерны стоит использовать.» Иан Джойс

11 упоминаний:

Вступление в алгоритмы

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

12 упоминаний:

Чистый код: Пособник мастера программного обеспечения

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

«Это еще одна книга, которой удалось полностью изменить стилистику написания моего кода. Я могу ясно разделить свою жизнь на период до прочтения книги и после.» Джон Сонмерц

Рефакторинг: Улучшение дизайна существующего кода

«Книга, строго рекомендуемая к прочтению для каждого, кто желает улучшить качество кода.» Деепак Карантх

«Обязательна к прочтению каждому, кто так или иначе принимает участие в работе с объектно-ориентированными языками программирования.» Дэниель Рид

14 упоминаний:

Мифический человеко-месяц, или Как создаются программные системы

«Это классика, но недавно исправленная и дополненная. В высшей степени поразительно то, как она тесно связана с разработкой программного обеспечения. Если вы принимаете участие в программировании, определенно эта книга – обязательна к прочтению.» Джейсон Роел

«Бесспорно, единственная классика, посвященная программированию. Позор всякому, кто еще не прочитал ее.» Джеффри Атвуд

15. упоминаний:

Прагматичный программист: От новичка к мастеру

«Насколько революционна эта книга? Пожалуй, достаточно для того, чтобы развернуть целую издательскую кампанию. Если вы все еще не прочитали ее – это, бесспорно, большое упущение с вашей стороны.» Род Хилтон

«Эта книга не только изменит ваш код: она изменит вас как программиста. Наполненная практическими советами по улучшению вас и вашего кода, бесспорно, является отличным приобретением для каждого, кто хочет стать лучшим в сфере разработки программного обеспечения.» Деепак Карант

16 упоминаний:

Идеальный код: Практическое пособие по программной архитектуре

«Сделайте для себя приятное. Пусть это будет первой книгой, которую вы прочитаете – и первой книгой, которую вы посоветуете другим.» Джеффри Атвуд

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

Полный список содержит в себе 139 книг. При желании на языке оригинала его можно рассмотреть здесь.

Автор перевода: Евгений Лукашук

5 книг по шаблонам проектирования для разработчиков

Авторы проекта Dev-Books проанализировали миллионы вопросов и ответов в крупнейшем сообществе программистов Stack Overflow. Всё для того, чтобы найти книги, на которые чаще всего ссылаются разработчики.

В общий список вошло 5 720 книг. Ниже вы найдёте 20 самых упоминаемых из них, которые когда-либо выходили на русском.

По просьбе Лайфхакера своими мнениями насчёт некоторых изданий поделились отечественные эксперты.

1. «Эффективная работа с унаследованным кодом», Майкл К. Физерс

Автор объясняет, как быстро разбираться в унаследованном коде, как тестировать его, как правильно вносить изменения. Книга содержит множество эффективных приёмов, предназначенных специально для этих задач.

2. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма и другие

«Классика для программиста. Первая книга, посвящённая именно шаблонам.«

Леонид Выговский, системный архитектор IT-компании LiveTe
— Издание уже 20 лет переиздаётся в изначальном виде. В этом, конечно, главный недостаток книги: некоторые шаблоны уже неактуальны. Думаю, её полезно читать уже после других, более современных, книг по паттернам проектирования. Тем более что она написана сухим академическим языком. Для понимания паттернов эта книга не must read, но её прочтение добавляет крутости в глазах коллег-программистов. 🙂 Начинать я советую с «Паттернов проектирования» (Head First Design Patterns).

3. «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин

«Интересная, но во многом спорная книга о том, как писать понятный и поддерживаемый код.«

Леонид Выговский, системный архитектор IT-компании LiveTex
— Почему спорная? Книг про написание кода уже огромное количество, и часть приёмов являются общепризнанными. Но каждый автор добавляет что-то своё. Лично для меня мнение Боба Мартина кажется иногда странным и противоречащим другим источникам. Не must read, но прочитать всё же стоит. Качество кода после прочтения становится лучше.

4. «Предметно-ориентированное проектирование», Эрик Эванс

«Очень сильная книга, которая мотивирует к саморазвитию. После прочтения кажется, что без ПОП качественный код не написать.«

Леонид Выговский, системный архитектор IT-компании LiveTex
— Из этой книги выросли концепции СQRS, BDD, onion-architecture и много других интересных идей. Единственный недостаток: книга насквозь теоретическая. Практическую пользу она приобрела только с выходом книги Вона Вернона «Реализация методов предметно-ориентированного проектирования» (Implementing Domain Driven Design). Поэтому читать их надо последовательно, сразу друг за другом.

5. «JavaScript: сильные стороны», Дуглас Крокфорд

Обязательная книга для веб-разработчиков. В ней Дуглас Крокфорд рассказывает о преимуществах языка JavaScript и учит грамотно их применять для создания эффективного кода.

6. «Шаблоны корпоративных приложений», Мартин Фаулер и другие

Книга описывает базовые принципы проектирования ПО для корпоративных платформ.

7. «Совершенный код. Мастер-класс», Стив Макконнелл

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

8. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер и другие

«Из серии книг по написанию понятного и качественного кода, «Рефакторинг» — лучшая.«

Леонид Выговский, системный архитектор IT-компании LiveTex
Выговский: «Она не только показывает хороший код, но и на примере плохого объясняет, чем именно он плох. Эта книга — must read для всех. Причём чем раньше вы её прочтёте, тем лучше. Качество кода после прочтения сильно вырастет».

Если книгу Фаулера вы уже прочли, обратите внимание на «Рефакторинг с использованием шаблонов» (Refactoring to Patterns) Джошуа Кериевски, которую рекомендует Михаил Осотов.

«Рефакторинг с использованием шаблонов» Кериевски — отличная книга для тех, кто каждый день сталкивается с проблемой легаси-кода и технического долга в своих проектах».

Михаил Осотов, директор по производству «Центра высоких технологий»
— Эта книга поможет сохранить свои нервы, подружиться с рефакторингом и сделать код лучше.

9. «Паттерны проектирования», Эрик Фримен, Элизабет Фримен и другие

«Серия Head First, на мой взгляд, идеально подходит для новичков в области разработки ПО.«

Михаил Осотов, директор по производству «Центра высоких технологий»
— Все книги написаны разными авторами, но в каждой виден общий подход, который выражается в простой подаче материала, интересных и простых примерах.

10. «Язык программирования C», Брайан У. Керниган, Деннис М. Ритчи

Классическое учебное пособие по языку C, написанное его же создателями. Однако начинающим эта книга может показаться сложной, поскольку требует от читателя знания основ программирования.

11. «Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ», Скотт Майерс

Книга содержит советы по проектированию программ, работе с шаблонами и управлению ресурсами, а также другие рекомендации по созданию качественного ПО на языке С++.

12. «Экстремальное программирование: разработка через тестирование», Кент Бек

Автор на примерах описывает методику разработки ПО, которая предполагает тестирование программ ещё до написания их кода.

13. «Алгоритмы. Построение и анализ», Томас Х. Кормен и другие

Эту книгу называют библией алгоритмов. Она зарекомендовала себя как отличное научное пособие для студентов технических вузов и всех, кто интересуется информатикой. Книга доступным языком знакомит с алгоритмами разных типов и описывает их особенности.

14. «Регулярные выражения», Джеффри Фридл

Издание об эффективной работе с текстом в Perl, PHP, Java, Python, Ruby и других языках программирования.

15. «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#», Джеффри Рихтер


Классический учебник по разработке приложений для платформы Microsoft, в том числе с помощью Silverlight, Windows Presentation Foundation, ASP.NET и прочих технологий компании.

16. «Современное проектирование на C++», Андрей Александреску

Книга для опытных программистов на C++. Автор предлагает новый подход к разработке, сочетающий метапрограммирование шаблонов, обобщённое программирование и объектно-ориентированное программирование на этом языке.

17. «Microsoft ASP.NET 2.0. Базовый курс», Дино Эспозито

Детальное руководство для опытных специалистов по ASP.NET 2.0. Книга учит создавать мощные, надёжные и масштабируемые сайты на этой платформе.

18. «Шаблоны тестирования xUnit. Рефакторинг кода тестов», Джерард Месарош

Автор книги показывает, как применять шаблоны проектирования, исключение повторений, инкапсуляцию и другие принципы разработки ПО к написанию кода тестов.

19. «Компиляторы. Принципы, технологии и инструментарий», Альфред В. Ахо и другие

Книга описывает базовые принципы разработки компиляторов и делает особый акцент на оптимизации кода. В помощь читателю — большое количество примеров из практики.

20. «Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET», Кржиштоф Цвалина, Брэд Абрамс

Издание содержит лучшие приёмы разработки библиотек для платформы Microsoft .NET Framework. Книга должна упростить работу любого .NET-специалиста, который пишет код для других разработчиков.

Эти книги должен прочитать каждый, кто считает себя программистом!

Содержание статьи

Польза не во многих, но в хороших книгах.

Сенека

Все мы прекрасно понимаем: чтобы стать профессиональным программистом, необходимо читать специализированную техническую литературу. Но на сегодняшний день доступно огромное количество различных изданий по программированию. Целой жизни не хватит, чтобы одолеть и половину из них. Какие же книги нужно читать в первую очередь? Без каких книг нельзя обойтись? В этой статье мы расскажем о тех трудах великих авторов, с которыми должен быть знаком каждый профессиональный разработчик.

С. Макконнелл «Совершенный код»

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Сложно найти гуру программирования, который не читал «Совершенный код» Стива Макконнелла. Действительно, одна книга, хоть и немаленькая (чуть менее 900 страниц), покрывает практически все аспекты разработки ПО: от рецептов написания высококачественного кода, механизмов тестирования и отладки до стратегий оптимизации кода и психологических факторов, влияющих на разработку. Представь себе: библиография книги занимает 20 страниц и содержит более 500 источников! Книга «Совершенный код» — одно из самых полезных и, как следствие, популярных изданий по разработке ПО. Она неоднократно доказала это, возглавляя рейтинги книг по программированию (goo.gl/3q0kx). Благодаря простой манере изложения, особому стилю и чувству юмора Стива книга читается очень легко.

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

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

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

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

Подвести итоги можно словами Джона Роббинса: «Это просто самая лучшая книга по конструированию ПО из всех, что когда-либо попадались мне в руки. Каждый разработчик должен иметь ее и перечитывать от корки до корки каждый год. Я ежегодно перечитываю ее на протяжении вот уже девяти лет и все еще узнаю много нового!»

М. Фаулер «Рефакторинг»

Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям.

М. Фаулер

Практически любое издание о рефакторинге ссылается на книгу Мартина Фаулера «Рефакторинг». Действительно, в этой книге Фаулер сделал невозможное — в предельно понятной форме донес до читателей почти полностью исчерпывающее описание понятия «рефакторинг», его назначение, особенности и методы реализации.

При немалом объеме (400 страниц) книга читается буквально за пару вечеров, от нее просто невозможно оторваться. Главная причина головокружительного успеха книги — ее практическая направленность. Все мы знаем, что самая сложная задача при подаче материала — привести хороший показательный пример. В этом Фаулеру нет равных. Книга начинается с примера улучшения программы, который сразу с головой затягивает читателя в мир рефакторинга. Всего 40 страниц примера дают нам вполне конкретное представление о рефакторинге, его целях, принципах и основных методах реализации. Мартин определяет рефакторинг как «изменение во внутренней структуре ПО, имеющее целью облегчить понимание его работы и упростить модификацию, не затрагивая наблюдаемого поведения». Но когда необходимо проводить данное изменение? Какой код должен подвергаться переработке? Автор дает исчерпывающие ответы на эти вопросы. Он вводит правило «трех ударов»: «После трех ударов начинайте рефакторинг». То есть когда вы делаете что-то аналогичное в третий раз, это сигнал для начала рефакторинга. Раздел «Код с душком» дает нам четкое представление о том, какой же код требует улучшения. К признакам такого кода относятся: длинный метод, большой класс, длинный список параметров метода, дублирование кода, операторы типа switch, временные поля, отказ от наследства, неуместная близость классов и многое другое.

Фаулер, как сторонник TDD (Test-driven development), посвящает главу книги созданию автоматических тестов и описанию среды JUnit. Если обнаружена ошибка, сначала необходимо написать автоматический тест, выявляющий ее, и лишь затем проводить исправление. Это позволит в будущем не наступать на одни и те же грабли. Аналогично перед проведением рефакторинга следует написать тест для улучшаемого кода, чтобы обеспечить неизменность его поведения.

Бо́льшую часть книги занимает каталог методов рефакторинга. Он содержит разделы, посвященные составлению методов, перемещению функций между объектами, организации данных, упрощению условных выражений и вызовов методов, решению задач обобщения и крупным архитектурным рефакторингам. Многие из методов рефакторинга автоматизированы в популярных IDE. Например, Visual Studio предоставляет возможности по автоматическому выделению метода (ExtractMethod), удалению параметра (RemoveParameter), выделению интерфейса (ExtractInterface) и пр. В качестве крупных рефакторингов уровня системы Фаулер приводит следующие: разделение иерархии наследования, выполняющей более одной задачи, преобразование процедурного подхода к проектированию в объектно-ориентированный подход, отделение предметной области от уровня представления, а также выделение иерархии, подразумевающее разбиение большого класса на целую иерархию значительно меньших по размеру и более специализированных подклассов.

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

Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес «Паттерны проектирования»

Проектирование объектно-ориентированных программ — нелегкое дело, а если их нужно использовать повторно, то все становится еще сложнее.

Э. Гамма

Спросите у опытного разработчика, какую книгу по объектно-ориентированному программированию вам обязательно стоит прочитать. В абсолютном большинстве случаев он посоветует именно эту. В отношении данной книги слово «бестселлер» звучит недостаточно выразительно, ведь с момента ее выпуска было продано уже более полумиллиона экземпляров на английском и тринадцати других языках!

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

Коллектив авторов известен как Gang of Four («Банда четырех»), поэтому представленные в книге паттерны называют GoF. Авторы разбивают все множество представленных паттернов на три группы: порождающие паттерны, структурные паттерны и паттерны поведения. Порождающие паттерны решают задачу инстанцирования (создание экземпляров) классов. К самым популярным паттернам в данной группе можно отнести AbstractFactory (абстрактная фабрика), FactoryMethod (фабричный метод) и Singleton (одиночка).

Структурные паттерны предназначены для решения вопросов компоновки системы на основе классов и объектов. К ним относятся такие важнейшие паттерны, как Adapter (адаптер), Bridge (мост), Composite (компоновщик), Proxy (заместитель) и Façade (фасад). Паттерны поведения связаны с алгоритмами и вопросами распределения обязанностей между классами. Здесь необходимо упомянуть Strategy (стратегия), TemplateMethod (шаблонный метод), Observer (наблюдатель), Command (команда) и Iterator (итератор).

Единственное, что может смутить читателя, — некоторые примеры в книге написаны на малоизвестном на сегодняшний день языке программирования Smalltalk, а для изображения диаграмм классов вместо привычного UML используется OMT (Object Modeling Technique).

Гуру ООАиП Мартин Фаулер пишет: «Паттерны GoF — это лучшая из когда-либо изданных книг по объектно-ориентированному проектированию. Эта книга чрезвычайно влиятельна в индустрии программного обеспечения — только посмотрите на библиотеки Java и .NET, которые буквально кишат паттернами GoF». Не существует специалиста в области объектно-ориентированного проектирования, незнакомого с паттернами GoF, а если такой и есть, то в этом случае его, скорее всего, нельзя назвать специалистом.

Р. Мартин «Чистый код»

Умение писать код — тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть.

Р. Мартин

«Чистый код» — одна из наиболее удачных книг, посвященных написанию высококачественного кода. Размер книги — 360 страниц, не считая приложений. При этом она настолько увлекательна и доступна, что за два-три вечера запросто прочитаешь ее от корки до корки. В дружеской манере «дядюшка» Боб рассказывает нам, какими же принципами нужно руководствоваться, чтобы писать хороший код. Книга изобилует примерами из реальных приложений, с которыми автор сталкивался в своей практике. Среди них такие известные продукты, как JUnit, FitNesse, JDepend, Ant и TomCat.

Книга разделена на три части. Первая часть — теория написания «чистого» кода: приемы, паттерны и принципы, которым необходимо следовать разработчику. Вторая часть носит практический характер и подробно описывает сам процесс «чистки» кода существующих приложений. Третья часть подводит итоги всей книги и содержит перечень «запахов кода» и методов их устранения.

В теоретической части подробно описываются принципы именования переменных, методов и классов, правила создания функций, написания комментариев, форматирования кода, принципы обработки ошибок и написания модульных тестов. Целый раздел посвящен особенностям создания многопоточных приложений. Роберт дает понять, что хорошо написать код недостаточно.

Необходимо поддерживать его чистоту с течением времени, чтобы предотвратить «загнивание». Поэтому он вводит «правило бойскаута»: «Оставь место стоянки чище, чем оно было до твоего прихода». То есть с каким бы участком кода мы ни работали, нужно пытаться в итоге сделать его качественнее, чем он был. В таком случае, код не будет загнивать и останется чистым.

При создании функций во главу угла ставятся компактность, правило одной операции и одного уровня абстракции — очевидные на первый взгляд принципы, которые так часто нарушаются программистами. Будучи ярым адептом TDD, Мартин указывает на важность «чистоты» не только кода конечного продукта, но и кода модульных тестов. Он иронически замечает: «Какими отличительными признаками характеризуется чистый тест? Тремя: удобочитаемостью, удобочитаемостью и удобочитаемостью».

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

В начале книги Роберт приводит ответы мэтров программирования на вопрос, что же такое «чистый код». Грэди Буч отвечает: «Чистый код прост и прямолинеен. Чистый код читается, как хорошо написанная проза. Чистый код никогда не затемняет намерения проектировщика; он полон четких абстракций и простых линий передачи управления». Программисты, которые стремятся писать «чистый код», просто обязаны прочитать эту книгу.

Д. Кнут «Искусство программирования»

Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер.

Д. Кнут

Программист, у которого нет книги «Искусство программирования», как священнослужитель, у которого нет Библии. Монографию Дональда Кнута часто называют «Библией программиста». Она содержит подробное описание и анализ важнейших фундаментальных алгоритмов, используемых в информатике, а также множество практических задач для усвоения и закрепления представленного материала. Журнал American Scientist включил работу Кнута в список двенадцати лучших физико-математических монографий XX века наряду с работой Эйнштейна по теории относительности. Успех книги определило качество изложения и глубина анализа общих вопросов программирования.

Кнут начал работу над «Искусством программирования» еще в 1962 году. По замыслу автора монография должна состоять из семи томов. Пока было издано три первых тома, а также первая половина четвертого. Все изданные на сегодняшний день материалы составляют почти 3000 страниц. Читать книгу совсем не просто (как, впрочем, и Библию), главным образом потому, что все примеры рассматриваются на низкоуровневом языке программирования — ассемблере для гипотетического выдуманного автором компьютера MIX. Поэтому у программиста вряд ли получится использовать книгу в качестве набора готовых рецептов для решения конкретных задач. Эта книга дает программисту не рыбу, а скорее хорошую удочку, с помощью которой он сможет не без определенных усилий самостоятельно наловить рыбы.

Первый том посвящен основным алгоритмам и состоит из двух глав. Первая глава подготавливает читателя к работе над книгой. Здесь рассматриваются основные математические понятия и теоремы, на которых базируется весь материал. Читатель знакомится с «полиненасыщенным компьютером» MIX, его архитектурой и его языком ассемблера. Вторая глава посвящена информационным структурам и алгоритмам работы с ними. Здесь рассматриваются деревья, многосвязные структуры, линейные списки, в том числе стеки, очереди, деки, циклические и дважды связанные списки и прочее.

Второй том включает в себя третью и четвертую главы. Третья глава посвящена работе со случайными числами и последовательностями. В четвертой главе описываются вопросы арифметики, а именно различные виды систем счисления, арифметика чисел с плавающей точкой и рациональных чисел, полиномиальная арифметика и другое. Третий том посвящен алгоритмам сортировки и поиска (соответственно, главы 5 и 6). Из четвертого тома опубликованы материалы седьмой главы, описывающей вопросы комбинаторного поиска.

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

В своем отзыве о работе Кнута Билл Гейтс сказал: «Если вы считаете себя действительно хорошим программистом… прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме». Цитата лишний раз подчеркивает, что, несмотря на сложность материала, настоящий профессионал обязательно должен осилить труд Дональда Эрвина Кнута «Искусство программирования».

Э. Хант, Д. Томас «Программист-прагматик»

Программисты-прагматики не уклоняются от ответственности. Вместо этого они испытывают радость, принимая вызовы и распространяя свой опыт.

Эндрю Хант

Книга «Программист-прагматик» полностью оправдывает свое название. Викисловарь говорит, что прагматик — это тот, «кто ставит практическую полезность, выгоду выше всего». Программисты-прагматики ориентируются в первую очередь на практическую успешность реализуемых проектов. Авторы на основании своего богатейшего опыта программирования создали структурированный набор практических советов для программистов. Небольшой размер книги (270 страниц) говорит о высокой концентрации важной для программиста информации.

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

Одним из самых замечательных принципов программирования, которым мы обязаны авторам, является принцип DRY (Don’t Repeat Yourself), что в переводе на русский означает: «Не повторяй самого себя». Это значит, что каждый фрагмент знания должен иметь единственное и однозначное представление в системе. Следование данному принципу позволяет повысить надежность, доступность и простоту сопровождения программного продукта.

В главе, посвященной общей философии прагматичного программирования, мы узнаем, каким авторы видят программиста-прагматика: он всегда принимает ответственность за свой код, следит за состоянием своего продукта, постоянно совершенствуется, общается и находит компромисс с пользователями. Глава «Прагматический подход» говорит об общих методиках разработки и оценки трудоемкости проектов. Важнейшая глава «Гибкость против хрупкости» рассказывает, каким же образом необходимо создавать действительно гибкие и устойчивые к изменению системы. Из главы «Перед тем, как начать проект» можно узнать о процедуре формирования и утверждения требований к системе. «Прагматические проекты» знакомят нас с критическими аспектами создания реальных проектов, такими как работа в команде, тестирование и формирование документации.

Единственное, что может подпортить впечатление о книге, так это недостаточно качественный перевод на русский язык и наличие множества опечаток. Книгу лучше всего читать в оригинале на английском языке. Нельзя не согласиться с отзывом Кента Бека: «Главное в этой книге то, что она поддерживает процесс создания программ в хорошей форме. [Книга] способствует вашему постоянному росту и явно написана людьми, знающими толк в программировании». Если вы стремитесь к постоянному росту как программист, эта книга обязательна к прочтению.

Заключение

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

Техническая литература для веб-разработчика на PHP

Есть такое выражение: «PHP — добрая мама», которая позволяет писать код буквально, как хочешь и где хочешь, и готова простить очень многое. Если руководствоваться этой логикой, то порог входа в мир веб-разработки становится очень низким.

Трудно представить большой проект со сложной бизнес-логикой, написанный без объектно-ориентированного программирования (ООП) и на ассоциативных массивах. При разработке сложных интернет-проектов нужно обязательно иметь полноценное представление обо всех возможностях языка PHP.

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

«Современный PHP» – Джош Локхарт

Рекомендуемое время чтения

Коротко о главных нововведениях, которые следует знать современному веб-разработчику на php: ООП, PSR, composer, continuous integration и тд. Книга небольшая и в большей степени только указывает, что именно следует изучить более основательно.

«PHP 7» – Дмитрий Котеров, Игорь Симдянов

Рекомендуемое время чтения

Книга охватывает все ключевые вопросы по разработке на PHP 7. Детально описаны все возможности ООП в PHP 7. Подробно рассказано о современных тенденциях в мире веб-разработки (composer, PSR, git, nginx+php fpm, etc).

PHP объекты, шаблоны и методики программирования – Мэтт Зандстра

Рекомендуемое время чтения

В данной книге начинается погружение в шаблоны проектирования. Паттерн (шаблон) — непосредственно зарекомендовавший себя способ решения какой-либо задачи.

Автор подводит человека к пониманию необходимости использования шаблонов, показывает примеры решения сначала «по старинке», а потом с применением паттерна. Для лучшего понимания сути шаблона его принято представлять в виде UML диаграммы. В книге выделена отдельная глава для знакомства с UML.

Одно из главных преимуществ книги в том, то что она написана именно в контексте применения при разработке интернет-проектов на PHP.

«Паттерны проектирования» – Эрик и Элизабет Фримен

Рекомендуемое время чтения

Книга выводит способность мыслить абстракциями при проектировании системы на новый уровень.

Самое главное: программируйте на уровне интерфейсов, а не реализации. Один класс – одна задача. Слабая связность кода – залог гибкости архитектуры. Оператор new требует особого внимание, т.к. способен породить сильную связность кода. Инкапсулируйте то, что может измениться.

«Приемы объектно-ориентированного проектирования» – Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес

Рекомендуемое время чтения

Книга содержит обширный список наиболее популярных паттернов от «Банды четырех», которые были первооткрывателями в направлении стандартизации и классификации паттернов.

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

Пять книг для фронтенд-разработчика

ES6 и не только

«ES6 и не только»

Единственная книга по ES6 на русском от хорошего автора. Особое внимание в ней уделяется новым функциям, появившимся в Ecmascript 6.

JavaScript: сильные стороны

«JavaScript: сильные стороны»

Классическое руководство по самым полезным частям языка. В этой книге выделены наиболее надёжные и удобные JavaScript-конструкции, которые позволяют создавать эффективный код.

JavaScript. Шаблоны

В книге с подробными пояснениями описываются примеры хорошего и плохого кода. Для её чтения необходимы хорошее знание языка и опыт написания скриптов. В руководстве также приводятся разные способы обхода недостатков языка. Рекомендую читать тем, кто уже освоил основы и готов двигаться дальше.

Practical SVG

Книга подойдёт для опытных веб-дизайнеров и разработчиков. Если вы никогда не работали с HTML, CSS, JavaScript, возможно, она покажется вам слишком непонятной. В ней разбираются основы использования SVG, инструменты сборки, анимация SVG и другие особенности векторной графики.

Accessibility for everyone

«Accessibility for everyone»

Книга о разработке доступного интерфейса. В ней описано, как написать доступный код, и эффективно использовать лучшие практики. Из неё вы узнаете, почему доступность имеет значение, и как её реализовать.

Некоторые книги серии A Book Apart есть и на русском языке. Среди них — «CSS3 для веб-дизайнеров», «Эмоциональный веб-дизайн», «Дизайн — это работа» и другие.

Мастер Йода рекомендует:  50 самых полезных jQuery библиотек Javascript
Добавить комментарий