Литература на выходные: 15 материалов по структурированию кода для разработчиков

Одним из параметров оценки кода служит его чистота. Создатель языка моделирования UML Гради Буч (Grady Booch) писал:

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


Сегодня мы собрали для вас список книг и статей по этой теме, которые рекомендуют к прочтению резиденты Hacker News, Stack Exchange и других профильных платформ.

6a5d0f45047146ebafa74ea4f0d39fe5.jpg/ Flickr / Robert Gourley / CC

Литература


  • «Совершенный код» Стив Макконнелл (Steve McConnell)


Эта книга чаще всего фигурирует в разговорах о чистоте кода. Ее даже называют «Библией разработки ПО». Работа увидела свет в 1993 году. Книгу можно считать наиболее полным практическим руководством по проектированию благодаря акценту на дизайн и планирование кода — этим этапам разработки автор отводит самую важную роль.


  • «Программист-прагматик. Путь от подмастерья к мастеру»
    Эндрю Хант (Andrew Hunt), Дэвид Томас (David Thomas)


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


  • «Способ мышления — Форт» Лео Броуди (Leo Brodie)


Форт — это язык программирования, который широко использовался в астрономии в 70-х годах прошлого века. Несмотря на узкую тематику, разработчики найдут в книге основы построения кода. Даже для тех, кто не собирается изучать Форт, «фортанский» способ мышления поможет иначе взглянуть на рефакторинг. Переизданная в 2004 году версия предоставлена автором Лео Броуди (Leo Brodie) в общее пользование.


  • «Ruby. Объектно-ориентированное проектирование» Сэнди Метц (Sandi Metz)


Сэнди Метц (Sandi Metz) подготовила практическое руководство по объектно-ориентированному проектированию с прицелом на разработчиков, знакомых с основами, но пока не сформировавших философию кода. Автор использует понятные и приближенные к реальной жизни примеры. Сэнди — фанат экономичных тестов и разумных подходов. На её сайте сказано: «Если код вас добивает, и никакой радости не осталось, — эта книга ваше решение».


  • «Рефакторинг. Улучшение существующего кода»
    Мартин Фаулер (Martin Fowler), Кент Бек (Kent Beck), Джон Брант (John Brant) и др.


Еще один нестареющий фолиант, появившийся в конце 90-х. Список авторов «Рефакторинга» возглавляет Мартин Фаулер (Martin Fowler), который вместе с Кентом Беком (Kent Beck) стоит у основ методологии экстремального программирования. Это совершенно новый взгляд на процесс разработки, который показывает, каким должен быть код и как он должен создаваться. Книга содержит примеры рефакторинга с подробным описанием. Многие из них не потеряли своей актуальности, а часть была автоматизирована и теперь используется в современной разработке.


  • «Искусство программирования для Unix» Эрик Реймонд (Eric Raymond)


Название книги не зря перекликается с фундаментальной работой Дональда Кнута (Donald Knuth) 1968 года «Искусство программирования». На страницах своей книги Эрик Реймонд (Eric Raymond) пытается донести не только практические рекомендации, но и философию — понимание кода в Unix. Он делает это с помощью множества примеров. В них прослеживается уважение к плодам работы талантливых людей, трудившихся над Unix, и философия «чистого кода».


  • «Практика программирования»
    Брайан Керниган (Brian Kernighan), Роб Пайк (Rob Pike)


Эрик Реймонд в своем труде называл «Практику программирования» «рекомендуемым чтением для ценителей С (точнее, для всех программистов)». Поэтому книгу можно назвать классикой чистой разработки. Здесь рассмотрены принципы практического профессионального программирования, которые включают в себя проектирование и правильный выбор алгоритмов.


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


«Чистый код» — это взгляд на процесс разработки с позиции XXI века. Книга изобилует конкретными примерами программ. Автор Роберт не пытается сформировать философию вокруг разработки, а показывает, как код работает «в жизни».


  • «Шаблоны игрового программирования» Роберт Нистром (Robert Nystrom)


«Это книга, которую я хотел бы прочитать, когда начинал создавать игры», — так описывает ее сам автор. На первый взгляд, «Шаблоны» — это узкоспециализированная литература для геймдева от ветерана Electronic Arts. Однако при ближайшем рассмотрении книга позволяет переосмыслить работу с кодом и сделать его чище. Кто-то из пользователей Reddit даже решил изучить C++ после прочтения книги.


  • «Читаемый код, или Программирование как искусство»
    Дастин Босуэлл (Dustin Boswell), Тревор Фаучер (Trevor Foucher)


По словам Николаса Закаса (Nicholas C. Zakas), автора работ по JavaScript, «книга погружает в процесс гигиены кода как ничто другое». В книге рассказано, как именование переменных, функций и классов помогает командам разработки. Основные акценты: структурирование кода и комментариев, балансирование между эффективностью и читаемостью.

Ссылки на литературу
  • «Совершенный код»
  • «Программист-прагматик. Путь от подмастерья к мастеру»
  • «Способ мышления — Форт»
  • «Ruby. Объектно-ориентированное проектирование»
  • «Рефакторинг. Улучшение существующего кода»
  • «Искусство программирования для Unix»
  • «Чистый код. Создание, анализ и рефакторинг»
  • «Шаблоны игрового программирования»
  • «Читаемый код, или Программирование как искусство»


fcc374862a224daebf4d886ce3f5ee9a.jpg
/ Maxpixel / Code Data Programming / CC

Несколько статей, блогов и инструментов


  • Статья «Как написать неподдерживаемый программный код» — своего рода классика. В формате «вредных советов» читателю предлагается узнать о том, какой код точно нельзя считать чистым.
  • У чистого кода есть некоторые формальные признаки. Проверить, не исходит ли от кода «дурной запах», можно с помощью таблицы профессора Мики Мянтюля (Mika Mäntylä). Признаки хорошего кода можно найти в блоге Coding Horror.
  • Как советуют пользователи Quora, чтобы постичь искусство чистого кода, стоит как можно больше читать хороший код. Для этого подойдут такие платформы, как GitHub, Codeplex, Google Code. Кстати, различные платформы предоставляют готовые инструменты для улучшения кода. Например, GitHub Code Review.
  • Процесс очистки кода можно частично автоматизировать. Существуют инструменты для статистического анализа. В случае с C, C++ для этого разработан PC-lint. Упростить код позволяет SourceMonitor.
  • Рекомендации по структурированию кода также зачастую дают разработчики платформ. Например, такой документ есть у Microsoft для C.



P.S. Наши дайджесты:

  • IaaS-дайджест: 30 материалов о работе с ПД, новых технологиях, ИБ и высокой производительности
  • 100 практических материалов по безопасности, экономике и инструментарию IaaS


P.P. S. О чем еще мы пишем в нашем блоге:

  • Балансировка нагрузки в облаке IaaS
  • Виртуализация приложений: как правильно настраивать виртуальные машины
  • Особенности двухфакторной аутентификации: работает ли это в облаке IaaS

© Habrahabr.ru