Собственно скорость написания кода зависит от того, как подходишь к написанию функционала программы.
Чтобы учесть больше моментов и проработать функцию, стоит потратить больше времени.
Тогда это затягивает разработку.
Либо фигачить быстро(и ставить везде goto :) ) и править потом баги и дописывать ещё что-то в функцию.
Хотя так тоже не для всех функций подходит. Какие-то придётся хорошо отлаживать и править.
Например загрузка 3д анимаций или уровня.
Например я потратил два месяца на функцию генерации звуков для своего сталкера.
Как бы не быстро вышло.
Писать на нормальных языках высокого уровня
Писать на нормальных языках
Всё равно получается не нормально :)
Писать на нормальных языках
Ты же должен сначало понять что именно должна делать функция и сделать нормальный алгоритм её работы.
А ЯП это уже третий момент.
Ну вот ты потратил два месяца на функцию генерации звуков, а мог бы просто взять готовые звуки. Ноль времени.
Надо побороть в себе страсть к оптимизации по размеру (как в примере со звуками), и по скорости, там где от этого не будет видимого результата (все эти твои sse конвертации строк в числа, итд).
Генерацией звуков есть смысл заниматься для конкурсов генерации звуков или демо-сцены. Ну или если тебе от этого весело, но тогда и жаловаться нечего.
ronniko
> Ты же должен сначало понять что именно должна делать функция и сделать нормальный алгоритм её работы.
Используй питон или какой-нибудь другой язык, где есть REPL. Там можно писать и проверять код одновременно, как бы "не выходя из программы", имея возможность пощупать в любой момент лежащие в памяти данные. Так быстрее создавать алгоритм, когда ты не знаешь точно, что и как хочешь сделать, и что в результате получится.
А уже потом гарантированно работающий алгоритм недолго реализовать на том языке, на каком хочешь, хоть на ассемблере.
Я выбрал следующий путь - мелкие функции и улучшения оставляю чат-боту. Сложное пишу сам. Особо не тестирую, пушу в гитхаб. Главное чтоб компилилось и запускалось. Тесты и баголовля - потом. Уже стало похоже на код больших систем - не идеально, местами уродливо. И меня это устраивает.
ronniko
> Чтобы учесть больше моментов и проработать функцию, стоит потратить больше времени.
> Тогда это затягивает разработку.
согласись, ты не знаешь что такое оптимизация.
Бесполезно вылизывать каждую функцию, если ты не можешь видеть код в общих чертах. Не можешь увидеть, что в процессе инициализации данных, можно добавить новые данные, и в "критических" участках кода, это позволит уменьшить нагрузку на этот код.
Но именно этого ты и не видишь.
Но именно этого ты и не видишь.
Просто нога чешется :)
Смотреть с 5 минуты и 31 секунды.
Mirrel
function CreateObj: zglTPoint2D; var x, y, i: LongWord; label XYNotCreate; begin //Чтобы эту функцию защетить от подвисаний. Вводим errornum переменную. errornum = -1 XYNotCreate: errornum +=1; if errornum >= 10 then exit; x := Random(32); y := Random( 24); for i := 0 to 3 do if ( x = round( stone[i].x)) and ( y = Round( stone[i].Y)) then goto XYNotCreate; // возвращаемся в самое начало. for i := 0 to Snake.len - 1 do if ( x = round( Snake.lenSnake[i].X)) and ( y = Round( Snake.lenSnake[i].Y)) then goto XYNotCreate; // возвращаемся в самое начало. Result.X := x; Result.Y := y; end;
Зачем делать работу, которая не нужна?
Зачем оптимизировать то, что не влияет заметно на производительность?
Зачем продмывать функции, которые могут никогда не пригодится?
80% результата требуют 20% времени.
Оставшиеся 20% результата требуют 80% времени.
Сколько мы сделаем фич за 100% времени, если будем каждую делать только на 80%? А если на 100%?
В большинстве случаев 5 фич сделанных на 80% ценней одной сделанной на 100%. Тем более, что и 100% сделанную и 80% сделанную всё равно придется допиливать из-за изменившихся условий.
Гораздо выгоднее не заниматься преждевременной оптимизацией и закладыванием архитектуры на будущее.
Это не значит, что надо писать говнокод с техдолгом. Это значит надо писать код решающий текущие задачи с пониманием того, как ты будешь его оптимизировать и улучшать. Но именно что с пониманием на будущее, а не сейчас же этим заниматься.
К слову, код, в который заложили все архитектурные решения с учетом всех возможных вариантов развития его в будущем - сам является переусложненным говнокодом в подавляюющем большинстве случаев.
Нужно завести 5 содержанок - пусть пишут код
@!!ex
Зачем делать работу, которая не нужна?
Зачем оптимизировать то, что не влияет заметно на производительность?
Зачем продмывать функции, которые могут никогда не пригодится?
Я такого и не делаю.
Мефические и не пойми для чего функции , я не пишу.
Есть конкретные задачи их и решаю, под них и пишу функции.
Приведу пример.
Надо писать функции для поведения и логики персонажей.
Сразу делема. Как сделать гибкую и универсальную структуру для всех персонажей ?
И связать эту структуру с набором функций.
Нужно завести 5 содержанок - пусть пишут код
У Найтмареза было 5 кошек для этого :)
ronniko
> Как сделать гибкую и универсальную структуру для всех персонажей ?
Написать 5 реализацией в разных проектах, посмотреть еще 20 написанных другими людьми.
Статье Сеньеором с пониманием как пишутся такие штуки.
С первого раза хорошо не получится всё равно.