Читаю исходные коды, написаные другими программистами, и понимаю, что в образовательных целях и для привития хорошего стиля в программировании надо просто заставлять людей какое-то время писать на функциональных языках.
Иначе они даже в OO модели пишут классический спагетти код - с сайд эффектами, с использованием переменных класса в качестве
(
Read more... )
а $result = $this->validate( $data );
где $data передается по ссылке, не вариант?
Reply
т.е. 3 раза подряд вызвать эту функцию и получить одинаковые результаты - не получится.
для упрощения структуры программы лучше никогда не рассматривать возможность менять входные аргументы функции.
Reply
Reply
на самом деле я довольно долго и нудно отстаивал свою точку зрения на счет НЕ реализации "передачи по ссылке" аргументов при удаленном вызове (подобие RPC для собственного маршалинга), но всегда наталкивался на непонимание со стороны C++ -истов.
а на счет минимизации при копировании, то задача, по крайней мере для C++, решается упаковкой tuple-объекта в оболочку из смарт-поинтера с референс-каунтером.
Reply
нууу, ты по любому меняешь первоначальный объект, не так-ли? речь идет о том, чтоб максимально НЕ копировать данные, пока это не надо.
кстати erlang пошел дальше - данные всегда копируются, кроме binary. и ничего, жить можно :) в последнее время вроде lists тоже оптимизируют, но все равно :)
правда у них есть один плюс - при рекурсивном вызове себя, если все правильно сделано - данные вообще не копируются, так как вызов происходит внутри этого-же stack frame, без создания нового :)
Reply
Leave a comment