Уроки, извлеченные из библии программной инженерии

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

Вот несколько уроков, извлеченных из первого знакомства с этим пробным камнем.

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

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

Но Чистый код - это больше, чем учебное пособие. В нем описывается не только то, как, но и зачем писать хороший код. Я читаю больше, чем механическое запоминание правил (хотя многие правила книги меня придерживаются), чтобы понять незыблемые ценности великого программиста. Для меня все сводилось к трем ключевым понятиям.

1. Мастерство имеет значение

Редко программист может позволить себе работать с фрагментом кода, пока он не станет идеальным (кроме того, «идеальный код» - это иллюзия; все имеет недостатки). Тем не менее, написание наилучшего кода должно быть высшим приоритетом для разработчиков программного обеспечения. Иногда они могут означать отказ от сроков, требований клиентов, требований руководства и усталости. Деловые условия часто устанавливают границы того, что «возможно», но кодировщик всегда имеет хоть какой-то контроль над качеством того, что он или она пишет.

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

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

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

2. Дополнительные усилия сегодня избавят от боли завтра

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

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

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

3. Ваш код не принадлежит вам

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

Излишне хитрые уловки, хитрости и хитрости программирования доставляют автору только удовольствие.

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

Что такое чистый код?

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

  1. Чистый код - это просто. Возможно, не простой по алгоритмической или системной сложности, но, безусловно, простой в реализации. Чрезмерно хитрые уловки, хитрости и хитрости программирования доставляют удовольствие автору и снижают ценность кода в долгосрочной перспективе. То же самое и с длинным кодом, который требует целой вечности, чтобы добраться до сути.
  2. Чистый код читабельный. Если соглашения об именах, интервалы, структура и последовательность, используемые в программе, не рассчитаны на читателя, то этот читатель почти наверняка не поймет замысел первоначального автора. Соглашения о том, как писать читаемый код, могут показаться догматичными или лишенными выразительности, но они помогают сделать код общим, а не загадочным.
  3. Чистый код требует внимания. Код, который не делает все возможное для информирования будущих читателей, - это код, не уважающий их время. Чистый код должен быть написан с предположением, что будущие потребители будут умными, вдумчивыми профессионалами (такими как вы), и он должен изо всех сил им помочь.
  4. Чистый код протестирован. Никто не пишет идеальный код без ошибок с первой попытки. Даже если бы это было возможно, нет гарантии, что идеальный код не сломается позже. Написание чистого кода означает написание проверенного кода. Таким образом, будущие пользователи могут быть уверены, что взаимодействуют с чем-то, что работает. Более того, при внесении изменений у них будет готовый набор тестов, подтверждающий, что ничего не сломалось.
  5. Практикуется чистый код. Написание чистого кода требует хорошей мышечной памяти, как если бы вы играли на музыкальном инструменте, пинали мяч или жарили яйцо. Лучший способ научиться писать чистый код - и, что более важно, сохранить навыки - это делать это постоянно. Когда вы дома работаете над личным проектом, делайте это с чистым кодом - даже если его никто никогда не увидит.
  6. Чистый код постоянно модернизируется. Чистый код должен постоянно подвергаться рефакторингу. Имея хороший набор тестов для резервного копирования вашего кода, вы можете сколько угодно рефакторировать его и никогда не беспокоиться о поломке.
  7. Чистый код - ТВЕРДЫЙ. Хороший код - это столько же о хорошем дизайне, сколько и о чистоте. Следование принципам SOLID - это один из способов обеспечить гибкость, поддержку и долговечность вашего кода.

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

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