- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Литература на выходные: 15 материалов по структурированию кода для разработчиков - 1 [2]/ Flickr / Robert Gourley [3] / CC [4]

Литература

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

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


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

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


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

Форт — это язык программирования, который широко использовался в астрономии в 70-х годах прошлого века. Несмотря на узкую тематику, разработчики найдут [10] в книге основы построения кода. Даже для тех, кто не собирается изучать Форт, «фортанский» способ мышления [9] поможет иначе взглянуть на рефакторинг. Переизданная в 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 даже решил [11] изучить C++ после прочтения книги.


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

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

Литература на выходные: 15 материалов по структурированию кода для разработчиков - 2
/ Maxpixel / Code Data Programming [22] / CC [23]

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

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


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

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

Автор: it_man

Источник [41]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/264243

Ссылки в тексте:

[1] писал: https://dzone.com/articles/what-clean-code-%E2%80%93-quotes

[2] Image: https://habrahabr.ru/company/it-grad/blog/337836/

[3] Robert Gourley: https://www.flickr.com/photos/rgourley/14056071668/

[4] CC: https://creativecommons.org/licenses/by-sa/2.0/

[5] разговорах: https://news.ycombinator.com/item?id=14841939

[6] называют: https://www.quora.com/Will-there-be-a-third-edition-of-the-book-Code-Complete-by-Steve-McConnell

[7] популярный: https://www.bgosoftware.com/blog/8-most-influential-books-on-programming-and-computer-science-of-all-time/

[8] разбитых окон: https://blog.codinghorror.com/pragmatic-programming/

[9] мышления: http://www.braintools.ru

[10] найдут: https://hackerboss.com/thinking-forth-the-unsung-classic/

[11] решил: https://www.reddit.com/r/gamedev/comments/3h0air/game_programming_patterns_awesome_book_entirely/

[12] словам: https://www.nczonline.net/blog/2012/02/13/book-review-the-art-of-readable-code/

[13] «Совершенный код»: https://www.ozon.ru/context/detail/id/138437220/

[14] «Программист-прагматик. Путь от подмастерья к мастеру»: https://www.ozon.ru/context/detail/id/3353337/

[15] «Способ мышления — Форт»: http://thinking-forth.sourceforge.net/

[16] «Ruby. Объектно-ориентированное проектирование»: https://www.ozon.ru/context/detail/id/138551500/

[17] «Рефакторинг. Улучшение существующего кода»: https://www.ozon.ru/context/detail/id/1308678/

[18] «Искусство программирования для Unix»: https://www.ozon.ru/context/detail/id/2317804/

[19] «Чистый код. Создание, анализ и рефакторинг»: https://www.ozon.ru/context/detail/id/5011068/

[20] «Шаблоны игрового программирования»: https://www.gitbook.com/book/likerrr/gameprogrammingpatterns/details

[21] «Читаемый код, или Программирование как искусство»: https://www.ozon.ru/context/detail/id/8466390/

[22] Code Data Programming: http://maxpixel.freegreatpicture.com/Code-Data-Programming-Code-Computer-Programming-944504

[23] CC: https://creativecommons.org/publicdomain/zero/1.0/deed.en

[24] «Как написать неподдерживаемый программный код»: https://www.se.rit.edu/~tabeec/RIT_441/Resources_files/How%20To%20Write%20Unmaintainable%20Code.pdf

[25] «дурной запах»: http://wiki.c2.com/?CodeSmell

[26] таблицы: http://mikamantyla.eu/BadCodeSmellsTaxonomy.html

[27] блоге: https://blog.codinghorror.com/code-smells/

[28] советуют: https://www.quora.com/What-are-the-best-books-on-writing-clean-code

[29] GitHub: https://github.com/showcases

[30] Codeplex: http://www.codeplex.com/

[31] Google Code: http://code.google.com/

[32] GitHub Code Review: https://github.com/features/code-review

[33] PC-lint: http://www.gimpel.com/html/pcl.htm

[34] SourceMonitor: http://www.campwoodsw.com/sourcemonitor.html

[35] такой: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions

[36] IaaS-дайджест: 30 материалов о работе с ПД, новых технологиях, ИБ и высокой производительности: https://habrahabr.ru/company/it-grad/blog/334424/

[37] 100 практических материалов по безопасности, экономике и инструментарию IaaS: https://habrahabr.ru/company/it-grad/blog/331620/

[38] Балансировка нагрузки в облаке IaaS: http://iaas-blog.it-grad.ru/funkcionalnost/balansirovka-nagruzki-v-oblake-iaas/

[39] Виртуализация приложений: как правильно настраивать виртуальные машины: http://iaas-blog.it-grad.ru/funkcionalnost/virtualizaciya-prilozhenij-kak-pravilno-nastraivat-virtualnye-mashiny/

[40] Особенности двухфакторной аутентификации: работает ли это в облаке IaaS: http://iaas-blog.it-grad.ru/bezopasnost/osobennosti-dvuxfaktornoj-autentifikacii/

[41] Источник: https://habrahabr.ru/post/337836/