Что такое код спагетти и как его избежать
Опубликовано: 2020-07-03Хотя из него может получиться вкусный итальянский ужин, одна из последних вещей, о которых вы хотите услышать о своей кодовой базе, - это спагетти . Мысль о том, что ваш код запутан, как тарелка спагетти, ужасает, но для многих разработчиков эта идея настолько абстрактна, что они не могут понять ее (или понять, как ее избежать или исправить). Вот почему в этом посте мы хотим погрузиться в то, что на самом деле представляет собой спагетти-код, показать вам некоторые передовые методы, как его избежать, и (когда это произойдет), как с этим бороться.
Подпишитесь на наш канал Youtube
Что такое спагетти-код?
Код спагетти - это кошмар, вот что. Как мы уже говорили выше, сленговый термин получил свое название, потому что, как гигантский клубок спагетти-макарон, если вы потянете за одну нить (кусок кода), она в конечном итоге переплетется в другую, а затем в другую и еще одну, пока она или все запутанные части ломаются.
Например, подумайте о свойстве! Important в CSS. Это невероятно мощный инструмент, позволяющий дизайнеру переопределять унаследованные стили и контролировать любой конкретный элемент без необходимости перекодировать всю таблицу стилей. Однако, когда им (или будущим разработчикам и дизайнерам) нужно что-то изменить, они могут добавить еще один тег ! Important, чтобы переопределить предыдущий. И так далее. Но если вы вернетесь и удалите или измените любой из стилей в этом стеке, любое количество стилей на странице может сломаться.
Этого мы пытаемся избежать.
Лучшие практики, чтобы избежать кода спагетти
1. Разработка стандартов кодирования
Способ номер один предотвратить спагетти-код - это создание и кодирование стандартов в вашей организации или проекте. Стандарты кодирования - это то, что делает возможными такие проекты, как WordPress. Тысячи разработчиков работали над WP Core, но стандарты кодирования WordPress сделали так, что все они работают в соответствии с одними и теми же принципами и одинаково выполняют задачи с одними и теми же параметрами.
Стандарты кодирования - это просто правила, которые вы соблюдаете. Они заставляют каждый код работать по одному и тому же шаблону, чтобы ошибки было легко найти и исправить, и чтобы будущие разработчики (или даже вы или ваша текущая команда) могли точно знать, что делает каждая строка кода как можно эффективнее. Если код Сьюзен не проходит тесты, он не попадает. Если в коде Жанин нет тестов для запуска, запрос на вытягивание отклоняется. Возможно, Даниэль не использует div в своем последнем запросе на перенос. Нет слияния, пока вещи не разделятся.
Кроме того, некоторые из исходных кодовых баз, страдающих от спагетти-кода, были более старыми языками без функциональной логики. Код не был основан на функциях, и поэтому различные логические операции были направлены на определенные строки в коде. В небольших проектах это не так уж плохо для навигации. Когда вы начинаете масштабировать проекты, наличие прямых ссылок на определенные файлы и строки кода может помешать этому развитию. Файлы могут пропадать, строки могут быть удалены или неправильно пронумерованы. А на его отладку, чтобы выяснить, какая именно нить спагетти была извлечена, могут потребоваться сотни человеко-часов. Наличие стандартов кодирования может предотвратить такое частое возникновение такого беспорядка.

Так что, разработав стандарты, вы очень эффективно снизили шансы на то, что у вас будет репозиторий спагетти-кода. Если вы хотите узнать больше о стандартах кодирования в целом, у GeeksforGeeks есть отличное руководство.
2. Следуйте руководству по стилю
Помимо стандартов кодирования, наличие руководства по стилю, которому нужно следовать, также поможет избежать слишком запутанного кода. Хотя теоретически это может показаться похожим, эти два понятия очень разные. Стандарты кодирования существуют как обязательные правила, которым следуют ваши разработчики, чтобы код работал эффективно. Они могут меняться от проекта к проекту или от команды к команде внутри организации.
Однако руководство по стилю обычно пишется для каждого языка, предлагая ряд передовых методов, позволяющих сделать код удобочитаемым и функциональным. Например, Airbnb создал одно из лучших руководств по стилю для React.js. Если вы не разработчик React, это почти ничего не значит. Но для разработчиков React, глядя на это, может реально помочь в том, как ваш код должен быть структурирован и написан, чтобы сделать его максимально доступным для будущих разработчиков.
Руководство по стилю, в отличие от общих стандартов кодирования, не обязательно является обязательным правилом. Это предложения сделать код более единообразным, чтобы его было легче читать. Это предотвращает спагетти-код, потому что вы точно знаете, за какую нить вы тянете в любой момент времени.
3. Прокомментируйте свой код
Комментарии к коду - возможно, самый простой способ предотвратить заполнение репозиториев спагетти-кодом. Когда вы что-то пишете, оставьте комментарий о том, что это делает. Если это сложная функция или фрагмент, объясните, что делает логика и почему это важно.
Однако вы сталкиваетесь с парой проблем, полагаясь на комментарии кода, чтобы предотвратить беспорядок. Во-первых, это добавляет много дополнительного времени проектам. Когда вы пытаетесь уложиться в срок или убедиться, что функция работает правильно, не всегда стоит писать подробное объяснение. А если вы начнете комментировать и откажетесь от проекта или следующий разработчик не продолжит? Это большая тарелка спагетти.
Других одолевает идея комментировать свой код - или учиться комментировать свой код, если они не делали этого раньше - из-за огромного объема, который они разрабатывают. Что совершенно верно. Но даже если вы время от времени комментируете важные (или даже ненадежные) строки или фрагменты, вы избавите кого-то, возможно, себя, от необходимости тянуть его в прошлом, пытаясь понять, что он делает.
Заключение
Повторяю, спагетти-код - это кошмар. Тратить бесчисленные часы, пытаясь выяснить, какая строка кода была изменена в гигантском репозитории, - одна из худших частей работы разработчика. Отладка в порядке (иш). Отладка и незнание с чего начать или даже удаленно вызывает проблему. Но если ваша команда устанавливает стандарты кодирования, следует руководству по языковым стилям и имеет даже незначительную политику комментариев к коду, очень высока вероятность того, что ваша цифровая тарелка спагетти будет гораздо менее запутанной, чем в противном случае.
Что вы делаете, чтобы предотвратить спагетти-код?
Статья от имени Доннея Стайла / shutterstock.com
