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

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

1. Понять формулировку проблемы

Удерживайте терпение и постарайтесь сначала глубоко понять постановку проблемы. Не думайте о внедрении, пока припаркуйте свой Mr. Fix it Hat Off.
Я бы посоветовал вам воспользоваться этим трюком:

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

2. Запишите это

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

3. Код

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

3. Тест

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

4. Попробуйте придумать более разумное решение

Самое время надеть шляпу Mr.Fix it Hat и начать думать о разных способах решения одной и той же проблемы гораздо лучше, чем грубой силой.
Здесь вы можете попробовать проанализировать временную и пространственную сложность вашего алгоритма и то, как вы может уменьшить это.
На этом этапе вы все еще можете вернуться и переписать эффективную логику, которая лучше, чем ваш существующий черновой вариант алгоритма, но попробуйте придерживаться вышеуказанных шагов.

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

5. Исправить

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

Заключение

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