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

Глава 1. Чистый код

Будет код

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

Это нонсенс! Потому что никто, даже человек, не может создать успешную систему со смутным чувством требований заказчика. Так что нам нужен код. Код — это окончательная деталь выражения требований.

Неверный код

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

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

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

Совокупная стоимость владения бардаком

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

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

Великий замысел в небе

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

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

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

Отношение

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

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

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

Основная загадка

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

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

Искусство чистого кода?

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

Написание чистого кода требует многих приемов и «чувства кода», которые могут превратить беспорядочный код в чистый код.

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

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

Вот и все с первой главой. Мы мельком увидим следующую главу, Значимые имена.