Облегчение жизни за счет написания легко читаемого кода

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

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

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

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

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

Используйте охрану и быстро терпите поражение

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

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

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

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

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

Охрана - это если проверяет прямо в начале ваших функций.

Вы просто берете вложенные проверки, инвертируете логику (т. Е. Проверяете, доставляется ли продукт в Pincode и т. Д.), А затем возвращаете или выдаете ошибку, чтобы избежать выполнения остальной части функции .

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

Предпочитайте положительные проверки

Это относительно простая практика. Всегда предпочитайте, чтобы именование было более позитивным для ваших проверок в условных операторах, чтобы обеспечить простоту понимания. Вы можете назвать функцию is_email () или is_empty (). Теперь рассмотрите возможность присвоения ему отрицательного названия, например is_not_email () или is_not_empty (). Таким образом, когда вы добавляете к нему not (!), Чтобы инвертировать проверку условия, сложность для понимания также увеличивается. Для is_email () или is_empty (), даже когда мы добавляем проверку «не (!)», Это довольно просто читать.

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

Извлечение структур управления и логики в новые функции

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

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

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

Нет вложенных проверок if, и теперь он кажется более чистым, поскольку избегает глубоких шагов проверки if. Также наш код - СУХОЙ.

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

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



Ключевые выводы из этой статьи:

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

Спасибо, что прочитали этот пост! Надеюсь, это было полезно. Не забудьте поделиться своими комментариями / отзывами к этой статье.

Присоединяйтесь к FAUN: Веб-сайт 💻 | Подкаст 🎙️ | Twitter 🐦 | Facebook 👥 | Instagram 📷 | Группа Facebook 🗣️ | Группа Linkedin 💬 | Slack 📱 | Cloud Native Новости 📰 | Еще .

Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить поддержку автору 👇