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

Примерно в это же время я также прочитала Мари Кондо «Изменяющее жизнь волшебство уборки». Она описывает метод «КонМари», который она изобрела для управления беспорядком, поддержания чистоты в доме и разжигания радости в вашей жизни на основе вашего физического пространства.

Хотя я не отождествлял себя со всем, что она обсуждала в книге, я обнаружил, что сравнение с очисткой кода заставляет меня задуматься. Я взял несколько идей из ее книги, чтобы обдумать, почему нам нужно сделать команду «Генеральная уборка» и как это сделать.

1. Грязная комната равняется грязному уму »

Я также считаю, что грязная кодовая база равняется грязному уму. Беспорядочная, запутанная кодовая база может стать огромным бременем для вашего мыслительного процесса и работы, особенно по мере роста вашей кодовой базы и роста вашей команды. Этой весной мы были командой из 5 инженеров, работающих над кодовой базой, которая существовала в течение 5 лет и над которой работали более 20 инженеров в какой-то момент. В ближайшие несколько месяцев у нас должны были появиться еще 3 стажера и два штатных инженера.

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

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

2. Убрать все сразу

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

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

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

3. Выбросьте, прежде чем класть вещи обратно

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

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

Мы начали с удаления старых представлений, старых URL-адресов, старых сценариев и частей кодовой базы, которые мы больше не используем. У нас был ряд устаревших полей на моделях, которые мы забыли удалить из базы данных, которые нам больше не нужны, поэтому мы удалили их.

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

4. «Когда-нибудь» никогда не наступит

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

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

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

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

5. Убирайте в правильном порядке.

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

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

В порядке, выбранном Кондо для уборки, я заметил одну тенденцию: сначала принимать легкие решения, а потом - сложные. То же самое и с кодом. Есть много вещей, которые легко удалить: пакеты, которые вы нигде не используете, старые страницы вашего сайта, на которые нет ссылок, и т. Д. Начните с того, что требует эмоциональных вложений. Программисты очень самоуверенно относятся к коду, поэтому попытка добиться прогресса в первую очередь в том, с чем все согласны, приведет вас к успеху.

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

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

CodeHS ​​- это комплексная обучающая платформа, помогающая школам преподавать информатику. Мы предоставляем учебные программы в Интернете, инструменты и ресурсы для учителей, а также предлагаем услуги по повышению квалификации.