Сценарий

Как вы думаете, что делает следующая функция?

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

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

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

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

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

Не поймите меня неправильно, эта функция разумна и относительно проста для понимания. Но зачем останавливаться на относительно простом? Давайте перейдем к простому:

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

Следует отметить, что при выполнении этого было добавлено еще несколько строк в наше решение, но это также позволило нам переместить все условия в один оператор if для сохранения на повторяющихся return false; операторах. Вы должны были быть сумасшедшими, чтобы попытаться сделать это с помощью предыдущего решения! 😜

К чему я клоню

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

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

Наконец, какой язык вы используете, когда общаетесь со своими сверстниками…?

Осознание

Совершенно верно, самый важный язык программирования - это вообще не язык программирования - это английский! (или какой у вас разговорный / письменный язык).

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

Очевидно, будет много случаев, когда будет просто невозможно выразить намерение вашего кода на «простом английском» - в конце концов, мы на самом деле не кодируем на английском языке (может быть, однажды). Тем не мение; вы всегда должны стремиться подобраться как можно ближе, чтобы получить все преимущества, упомянутые в предыдущем разделе, и многое другое!

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