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

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

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

/ 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, «книга погружает в процесс гигиены кода как ничто другое». В книге рассказано, как именование переменных, функций и классов помогает командам разработки. Основные акценты: структурирование кода и комментариев, балансирование между эффективностью и читаемостью.



/ Maxpixel / Code Data Programming / CC

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


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



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


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

Комментарии (13)


  1. Tiendil
    22.09.2017 16:20
    -2

    Ну и зачем тут ещё один список?
    Какие критерии отбора? Почему именно эти 15 материалов, а не другие 15 материалов, которые 100% тоже рекомендовались на профильных платформах?


    1. andrewzhuk
      22.09.2017 16:28

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


      1. Tiendil
        22.09.2017 16:57
        +2

        Гугл умеет искать по конкретному сайту, например так: «site:habrahabr.ru Совершенный код»

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

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

        Так какими критериями вы пользовались при выборе ссылок?


        1. Actee
          22.09.2017 17:22
          +2

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


          1. Tiendil
            22.09.2017 17:29
            -2

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

            Я, например, считаю, что он взял N случайных книг. Карма автора, кстати, на это намекает.

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

            >Я например не отслеживаю все подборки книг через гугл и ценю проделанную автором работу.
            Чтобы наткнуться на большинство этих книг не надо ничего отслеживать вообще. Достаточно просто быть в профессии.


            1. Actee
              22.09.2017 17:40

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


              1. Tiendil
                22.09.2017 17:46
                -1

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

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


                1. Actee
                  22.09.2017 18:10

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


          1. Shifty_Fox
            23.09.2017 03:20

            Присоединясь


          1. TheShock
            23.09.2017 05:52
            -1

            это как раз основная причина того, что многие компании просто не решаются вести блоги

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

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

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

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


        1. AbstractGaze
          25.09.2017 07:37
          +1

          А еще гугл умеет ставить дату актуальности.
          Например приходит «молодой» человек в новую среду и хочет чему то научится, и начинает искать в гугле, как думаете, он будет искать информацию за последний год, или читать стати до 2000 года?
          Я вот ищу более свежую информацию, не смотря на то что книги могут быть указаны и 40 летней давности, для меня это лишь подтверждение того, что они до сих пор актуальны.

          А по поводу того от кого эта информация и какое у нее качество — для меня в большинстве случаев достаточно того, что она с хабра, и информация с положительным рейтингом. Я доверяю в этом плане хабру.
          Да и не представляю где в русскоязычном сегменте можно найти другие источники, с проверенными (кем проверенными кстати?) экспертными источниками. Экспертиза вообще понятие относительное. То что дядя ваня о котором я ничего не знаю скажет что эта статья крута — говорит… да ничего не говорит. Ведь дядя ваня в моих глаза такой же «эксперт» как и автор статьи на которую дядя ваня и дает рецензию.
          А на харбе можно хотя бы посмотреть комментарии, и от кого они.


  1. lair
    22.09.2017 16:31

    Рекомендации по структурированию кода также зачастую дают разработчики платформ. Например, такой документ есть у Microsoft для C.

    Вообще-то, по ссылке документ для C#.


  1. kuznetsovin
    23.09.2017 14:05

    В список книг я бы еще SICP добавил бы