Читаю исходные коды, написаные другими программистами, и понимаю, что в образовательных целях и для привития хорошего стиля в программировании надо просто заставлять людей какое-то время писать на функциональных языках.
Иначе они даже в OO модели пишут классический спагетти код - с сайд эффектами, с использованием переменных класса в качестве
(
Read more... )
Comments 28
Reply
городить огромный и сложный огород, только из-за того, что язык не поддерживает динамическую типизацию и еще много вкусностей языков более высокого уровня? неее. нафиг-нафиг такие оладушки :)
Reply
Reply
Reply
ne sip' mne sol' na rani
ya vot javu nenavizhu, za to chto v ney netu daje tuple-ov. Prichem netu ne potomuchto nedodelali, a potomu chto chey to krivoy mozg reshil, chto eto protivorechit idee OOP
ksta, v matlab e ochen' krasivo
[ a b c ] = foo()
gde a, b, c kakie ugodno lhs statementi
Reply
мозг правильно решил - tuples противоречат идеет OOP :))))) и язык начинает походить на что-то функциональное сразу.
насчет офигительно мощной типизации, наследовании и полиморфизме - можно посмотреть haskell, там очень красивая и на порядок более мощная система :) которая еще ко всему плюс ложится в функциональную модель нормально :)
Reply
а $result = $this->validate( $data );
где $data передается по ссылке, не вариант?
Reply
т.е. 3 раза подряд вызвать эту функцию и получить одинаковые результаты - не получится.
для упрощения структуры программы лучше никогда не рассматривать возможность менять входные аргументы функции.
Reply
Reply
на самом деле я довольно долго и нудно отстаивал свою точку зрения на счет НЕ реализации "передачи по ссылке" аргументов при удаленном вызове (подобие RPC для собственного маршалинга), но всегда наталкивался на непонимание со стороны C++ -истов.
а на счет минимизации при копировании, то задача, по крайней мере для C++, решается упаковкой tuple-объекта в оболочку из смарт-поинтера с референс-каунтером.
Reply
Поясню (с некоторыми отхождениями от действительности) на примере того, откуда эти валидации появились в PHP: на рельсах.
В модуле ActiveModel::Validation есть функция get_validation_errors Она то вполне себе немодифицирующая, возвращает список ошибок.
А вот метод validate на объекте очень даже должен быть модифицирующим, потому что это посылка командного слова уровня бизнес-логики: поменяй своё состояние. Это нужно, потому что именно так устроена концепция MVC: контроллер посылает командные слова объектам уровня модели, что бы потом их рендерить во view.
Ты же предлагаешь порождать отдельный объект, который не существует в исходной доменной области, тем самым наводняя уровень M служебным кодом. Т.е. как раз спагетти-код.
Reply
Reply
Наверное, надо просто найти золотую середину и придерживаться ее. Ну и, конечно, читать маны отладчика :)
Reply
понятно :) я смотрю с точки зрения целесообразности бизнеса и получения конечного продукта -- и пофиг на чем писать, лишь бы получать работающий код _быстро_. и скорость реализации здесь существенно важнее производительности программы или аппаратхынх требований :)
ты смотришь с точки зрения программиста - 'как бы так красиво разойтись и сделать Архитектуру' :))))
поэтому и разные точки зрения :)
Reply
Leave a comment