PREP - это мнемоника, которую я создал, чтобы помочь вам запомнить шаги, необходимые для решения проблем с программированием на доске. Это означает P параметры, R eturn, E xample, P seudocode.

Мнемоника новая, но лежащая в основе техника проверена в бою. По сути, это удобная для новичков версия разработки через тестирование, которая хорошо справляется с задачами кодирования.

Давайте сразу перейдем к делу и изучим PREP на примере задачи. Мы будем использовать JavaScript, но этот метод работает практически для любого языка программирования.

Интервьюер просит вас создать функцию, которая принимает предложение и возвращает самое длинное слово. Чем вы занимаетесь?

«P» означает «Параметры».

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

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

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

Вы могли бы назвать свое «предложениеString», но называть его «предложением» более кратко и все же дает понять, что мы имеем дело со строкой.

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

«R» означает возврат

Что возвращает эта функция ? Это число? Логическое? Строка?

Помните: значение, которое возвращает функция, не совпадает с тем, что она может отображать в операторе печати / журнала.

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

«E» - это, например,

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

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

Последняя буква «P» означает псевдокод.

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

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

Вы закончили ПОДГОТОВКУ. Теперь вы можете писать код!

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

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

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

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

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

А теперь попробуйте! Вот несколько задач начального уровня, с которыми вы можете попрактиковаться, в порядке возрастания сложности:

  1. Предположим, у вас есть массив строк типа [«adios», «bye», «ciao»]. Ваша задача - написать функцию с именем total_characters, которая принимает такой массив в качестве параметра и возвращает суммарное количество символов по всем строкам в массиве.
  2. Напишите функцию для подбрасывания монеты n раз, которая возвращает количество раз, когда «орел» был подброшен.
  3. (Из Free Code Camp) Мы передадим вам массив из двух чисел. Верните сумму этих двух чисел и всех чисел между ними. Наименьшее число не всегда будет первым. Попробуйте сначала использовать PREP, чтобы настроить это самостоятельно, но затем не стесняйтесь подтвердить свою настройку и завершить решение здесь.

PREP уже помог нескольким ученикам First Step Coding пройти собеседование по программированию, и я надеюсь, что это поможет и вам. Удачного кодирования!

Если вам это понравилось, нажмите 💚 ниже, чтобы другие люди увидели это здесь, на Medium.