#алгоритм
В голове крутятся идеи что и как написать , но нет понимания как это объединить и сгруппировать. И так стало интересно, кто и как концентрируется при разработке +- сложных алгоритмов? Как разделяете на последовательность действий? Как группируете? P.S. Новичок, пишу для себя, написал прототип+- рабочий и хочу улучшить.
Ответы
Ответ 1
Для разработки алгоритма не привязываюсь ни к какому языку. Сперва просто расписываю по шагам на бумаге что и как должно происходить. Подход "сверху-вниз". То есть сперва крупными блоками, затем каждый из этих крупных блоков разбиваю на более мелкие и так до тех пор, пока дальше бить не будет никакого смысла. Затем пишу прототип решения и тесты к нему уже на компе. И уже этот прототип довожу до ума, рефакторя, профилируя и оптимизируя те или иные участки кода. Очень полезно написать тесты, так как они помогают контролировать, остался-ли код работоспособным после того или иного изменения. Кроме того использую статические анализаторы кода. Им не стоит доверять на все сто, но они часто дают полезную информацию о том, где может быть потенциально опасный с точки зрения возникновения багов код.Ответ 2
Для составления того или иного алгоритма необходимы не плохие знания языка на котором пишешь, так как в зависимости от использования тех или иных инструментов этого языка ты можешь написать алгоритм. А хороший или плохой он будет - зависит как раз от этих знаний. Например, в ООП есть паттерны - шаблоны реализации под те или иные задачи, благодаря которым их реализация и дальнейшая поддержка будет проходить с минимальными проблемами. Код, (желательно, практически обязательно) должен придерживаться определенным правилам проектирования: например, таким как KISS, SOLID, DRY и т.д.. Я обычно для начала, реализую какую либо заготовку кода, не отшлифованную, так сказать, смотря на определенные условия, которые должны выполняться в коде. Пытаясь, соответствовать им, параллельно думаю как код можно улучшать, какими способами сделать так, что бы он был максимально производителен и оптимизирован.(Тут нам и понадобятся различные знания) Различные знания помогают за счет своего разнообразия выбрать наилучший вариант из возможных. Пример: Разные способы реализации в алгоритмах - https://tproger.ru/articles/computational-complexity-explained/ Множество различных вариантов сортировки - https://habr.com/ru/post/335920/ Дополню, если мысли придут
Комментариев нет:
Отправить комментарий