Дорогие Хабрачане, подскажите, пожалуйста, при написании проекта на что больше обратить внимание, на читабельность кода (если с ним будут работать другие программисты) или на скорость выполнения? Вопрос не только о выборе рекурсии и циклах, но и в общем, при написании любого проекта.
Вот откуда возник вопрос: рекурсия выполняется медленнее, но она более читабельна, чем цикл, который выполняется быстрее рекурсии.
Вот откуда возник вопрос: рекурсия выполняется медленнее, но она более читабельна, чем цикл, который выполняется быстрее рекурсии.
Спасибо, поржал)
Лучше - учите операции досрочного выхода из "вихря" рекурсии.
1. Читабельность кода - определяется его архитектурой.
2. Скорость выполнения - правильно выбранным алгоритмом для конкретной задачи и количеством операций для динамической работы с памятью: выделение памяти под объекты, переменные, etc.
Конечно же чистота кода. В 99% процентах случаев не важно, выполняется ваша функция за O(n3) или O(log n). Про низкоуровневые оптимизации вообще стоит забыть, если изначально не стоит требования писать под "калькуляторы".
Наверное одно из немногих, о чем не стоит забывать, это применение правильных структур данных, чтобы не получилось так, что на каждый чих будет там что-то пересчитываться, когда этого можно избежать
Читабельность вобщем важнее эффективности. "Код пишется не для машины а для других программистов"(c) Там где необходим низкоуровневый, слабоструктурированный код для производительности любой ценой много комментируйте.
За мою немаленькую практику крайне редко встречал действительно полезные комментарии.
В подавляющем большинстве случаев комментарии вредят читаемости и без того плохо написаного кода.
Не в счет различного рода управляющие комментарии для различных линтеров или автогенераторов документации.
1) Существуют языки программирования в которых рекурсия вообще заменяет цикл (Haskell, Erlang) и другого способа описать итерацию кроме как через рекурсивную функцию - нету. Но наверное в топике тема рекурсии - не основная - а просто частный пример.
2) Во всех случаях всегда надо выбирать "читабельность". Прошли времена когда программисты отдавали дань ассемблеру или указателям на сырую память. Сегодня так пишут все меньше и меньше. И основная задача написания кода - сделать его понятным для вашего коллеги. Цитата : "Код пишется человеком для прочтения человека и лишь в очень редких случаях - для машины".
Вобщем пишите код. Просите коллег чтоб они его посмотрели и ПОНЯЛИ что вы имели в виду. И если коллеги будут кричать WTF! - фиксируйте их замечания и доводите до такого состояния чтобы ни у кого не было вопросов.
Это будет идеальный код по Роберту Мартину.
Читабельность тоже не простой вопрос, я встречал людей для которых рекурсия менее читабельна чем цикл. Но читабельность это главное, суть в чём - код все равно когда-то придется менять (например он работает слишком медленно), если он не читабельный - его проще выкинуть, а это и потраченные ресурсы и риск.
Да. Рекурсия может быть менее читабельна. Но иногда она безальтернативна когда вы описываете формы Бэкуса Науэра например. Выражение содержащее под-выражения описать можно только через рекурсивный шаблон.