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

Это неправильное отношение.

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

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

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

Стремитесь объяснить

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

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

Задача зачастую оказывается сложнее, чем кажется.

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

Возьмем для примера эту строку кода:

предложение_letters = набор ()

Чтобы объяснить эту строку кода, я бы сказал: «Offer_letters отслеживает уникальные буквы из предоставленного предложения, поскольку в предложении могут быть числа, кратные одной и той же букве». Учитывая контекст проблемы, именно это то, что предложение_letters (отслеживает уникальные буквы) и почему это делается (предложение может содержать повторяющиеся буквы).

Объяснение отличается от описания. Чтобы описать эту строку кода, я бы сказал: «Создайте пустой набор». Но это мне мало что говорит. Что делает набор и почему это важно?

Это простой пример, чтобы донести мысль: стремитесь объяснить. На то есть причины.

Пройти тест знаний

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

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

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

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

Сделать его лучше

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

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

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

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

Критический навык, который нужно развивать

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

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

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

После того, как вы объясните свой код, сделайте карточки, чтобы действительно закрепить концепции. Я использую Anki: бесплатную программу для карточек с открытым исходным кодом, в которой используется интервальное повторение. Я делаю карточки, чтобы напоминать мне о том, что у меня хорошо получалось (поэтому я делаю их снова), а также о концепциях, над которыми мне нужно работать. Идея состоит в том, чтобы регулярно пересматривать основные идеи, о которых я узнал или использовал при объяснении своего кода.

Сделай это

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

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

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

Программист и писатель: amymhaddad.com | Programmerspyramid.com | Я пишу в Твиттере о программировании, обучении и продуктивности @amymhaddad

Первоначально опубликовано на amymhaddad.com.