- 1
- 2
- 3
static function beforeIblockElementAddOrUpdateResetResponseAuthor($fields){
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+159
static function beforeIblockElementAddOrUpdateResetResponseAuthor($fields){
...
}
А так как с ООП в PHP сообществе обычно не очень хорошо, то вот такие конструкции там и получаются.
Если ты не можешь назвать метод ОДНИМ глаголом, значит он делает БОЛЕЕ одной вещи, и вероятно должен быть отрефакторен.
Это колбек для события, префикс beforeIblockElementAddOrUpdate нужен для того, чтобы можно было быстро поиском по коду найти все колбеки для определенного типа. Я бы только подчеркивание добавил, чтобы отделить префикс от названия метода (ResetAuthor).
Метод должен называться исходя из того, что он делает. А навешивать его можно на какое угодно событие. А искать нужно посредством IDE а не посрдеством "поиск по коду".
Про "искать посредством иде" оставьте байку для тех, кто держит код на локальной машине.
Название метода зависит от его действия, а не от того по какой причине его вызывают.
Например, вот (извините что на пайтоне):
>>оставьте байку для тех, кто держит код на локальной машине.
штоаа?;)
У Вас часть кода лежит удаленно и Вы ищите по нему "поиском по коду" причем так, что IDE не имеет туда доступа?? Типа зашли по FTP фаром и нажали F4?
если пхп-программист не способен руками подправить код на прод сервере, значит он не может называться проффесионалом
Само собой. Причем периодически сохраняя недоперепиленный файл в редакторе.
> авком
Фу. Настоящий пыхер правит текстовым редактором.
Но это не совсем настоящий. Совсем настоящий (как я уже говорил) идет по FTP тотал коммандером, жмет F4 и правит в блокноте
Я что-то пропустил. О каких проблемах с кодировками речь?
Дефолтный swedish_ci же. А в старых мускулях, емнип, вообще кодировок не было (и, соответственно, проблем с ними).
Если таблички запилили до этого - уже нет. Помогала только полная выгрузка, пересоздание и перезаливка. И то какие-то грабли были, емнип.
Но Вы же помните статью Расмуса: фреймоврки нинужны.
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2287
На самом деле хранить статику в файловой системе это и правда хорошо, потому что во-первых ее нгинкс отдает, во-вторых ее удобно в git, в третьих удобно редактировать.
Нет. Консолечка в срачло же. Настоящий пыхер никогда не опустится до использования консольных прог.
Кста, у пыха было два бинарника (не считая модуля под апач): CLI и CGI. CGI писал заголовки и X-Powerd-by, а CLI -- нет.
Почему было?
досовых! Любую псведографическую программу называй "досовой", причем на никсах тоже.
В битриксе около 15 тысяч файлов.
Рабочее окружение проекта на битриксе, dev-копии, если по-хорошему, должно быть идентично окружению на продакшн-версии. Версия lamp, примочки, крон и прочее.
Вести разработку на локальной машине в этом случае неэффективно (потери времени на настройку окружения). Пробовали вариант создания дампов виртуальных машин, но отказались - в этом случае каждому разработчику требовался суперкомпьютер.
По этой причине, в особенности если в группе присутствуют удаленные разработчики, применяется группа dev-серверов, у каждого разработчика своя домашняя директория со своим клоном проекта. И да, к сожалению, sshfs пока не настолько крут, чтобы дать возможность ide делать поиск по коду или intelisense. Поэтому поиск по старинке, через git grep например.
Из этого вытекает и мое замечания по поводу названия метода. Предположим, я назвал, как это полагается, метод ResetResponseAuthor. И, как вы предлагаете мне найти все обработчики события в таком случае?
Это уже относится больше к соглашению разработчиков по именованию методов. Можно делать так, как показано в примере, можно вынести все обработчики в отдельный класс Events, можно еще что-нибудь придумать.
Я вижу такие названия постоянно, получая на поддержку чужие проекты, и прекрасно понимаю логику тех, кто так поступает. Если вас такая логика не устраивает - это не повод считать ее говнокодом.
https://en.wikipedia.org/wiki/Docker_(software)
.
Докер это виртуализация посредством API ядра Linux. Она позволяет создавать конфигурацию и разворачивать её на любой линукс машине довольно быстро и легко. Не нужны ни суперкомпьюетры ни виртуалки.
Но нужен линукс на хосте.
>>. Версия lamp, примочки, крон и прочее
Это намекает на то, что они пишут не кросс-платформенный код)
1) проект сильно завязан на лялих (крон там, то-сё)
2) разрабы под виндой
3) компы у них слабые, виртуалку не запустить
4) девсервер стоит так далеко что подрубица по smbfs/cifs итд нельзя
Блин, ну php код-то у себя можно держать? Ну поставить заглушку вместо крона?
Затем, что правка кода, который в любой момент может вызвать крон, попахивает извращением... А потом еще и ждать, пока крон вызовет скрипт... Зачем всё это, если можно тупо пнуть скрипт самому?
Also you can write dual-mode script that takes options from command line and from request variables.
For example:
я вот тут распинался что консолечку надо называть "дос", но называть ее "черный икран" куда круче.
А пинать скрипт это по-нашему) На одном сайте каждый 20й запрос отправлял одно письмо по рассылке. Так была реализована рассылка с задержкой без крона: у каждого 20го пользователя лишь чуть чуть тормозило, зато все работало
Правда, я не уверен, что эта штука будет работать, если окружение отлично от FastCGI.
Зато этот инстанс FastCGI будет занят, и на какое-то время перестанет отвечать на запросы?
По-хорошему - отдельный воркер со spooler'ом.
popen слишком неконтролируемый и немасштабируемый.
Мне кажется, большинству должно хватать Gearman.
Нам нужно больше гарантий, и я пилю свой чудо сервис для асинхронного выполнения задач поверх зукипера.
На маке тоже работает (приносит свой рантайм для эмуляции). Мелкософт озадачен, обещали на винде такое тоже запилить, чтобы прям в ней контейнеры запускать.
P.S. Другое дело, что пыха довольно динамична, и IDE может не справиться с поиском.
Я перепробовал почти все ide под php, какие нашел, последний раз тестировал sublime, phpDesigner, phpStorm как раз, и eclipse. На машинке с 4 гигами памяти, проц i3, где-то год назад тестировал. Ждать по несколько минут, пока найдет искомое - это несерьезно, потери времени. Единственный, кто более менее справился с задачей - sublime, но это наполовину ide. Лучший вариант - искать через git grep, а это, сам понимаешь, другой метод. Intellisense кстати приходится отключать, иначе проект загружается по пять минут, а когда между задачами и проектами прыгаешь, это тоже ощутимые потери времени. Также приходится отключать и автокомплит, иначе банально построение индекса для автокомплита может повесить систему. На ubunte чуток меньше вешает, но все равно вешает.
Так что воркэраунд, применимый для разработки проектов на одном фреймворке, может быть неприменим на другом. Только и всего. И это приводит к тому, что приходится идти на соглашения между разработчиками, в именах методов в частности.
Ну а как еще? "Правим строчку, проверяем, правим строчку проверяем, заебись, заработало, коммитим патчсет из 100500 строк" что-ли?
И мне пофиг, откуда я это делаю, я могу это делать из дома с винды, могу из офиса с убунты, могу с пляжа через планшет. Я не привязан к конкретной машине, рабочее окружение создается один раз на сервере для всех разработчиков.
В вашем случае, надо каждому разработчику воссоздать на локальной машине рабочее окружение проекта, и если вдруг сотрудник пожелал работать из дома, то ему и там еще придется потратить время на создание рабочего окружения. Сплошные потери. Не эффективно.
Более того, ваш вариант я в начале своего пути кодера как раз и использовал (денвер и т.п.). Сейчас пришел к пониманию, что в команде такой вариант невыгоден.
Ну вот Вы git pull, к Вам приехало 10005000 новых файлов, они срзу же отправились на сервер?
Моя локальная машина лишь тонкий клиент получается, для работы вполне хватает старенького eee pc, если в дороге например или на отдыхе)
некогда разворачивать среду
правь код на серваке по ssh
Комп с 4-8 гигами памяти - суперкомпьютер?
что мы сделали не так?
разочарован в битриксе
я-то думал, что всё, что пахнет 1с, уж как-нибудь позволяет потратить пару десятков тысяч рублей на основное средство производства с амортизацией 3 года
Но если серьезно, то выше http://govnokod.ru/17147#comment256907 написал причину отказа от хранения кода локально и переходу к идеологии "тонких клиентов" для группы разработчиков. Повышается мобильность, меньше затрат ресурсов. Но и конечно проявляется минус, в частности в том, что sshfs или любой другой способ монтирования удаленных директорий накладывает свои ограничения на использование intellisense и автокомплита при большом кол-ве файлов в проекте.
Я могу сделать git pull прямо на пляже и там же поправить строчку и запустить проект даже если до близжайшего сервера мне три дня дайлапом
----
Вы мечтаете об i5?
P.S. Быть незаменимым хотя бы в одной области - очень и очень хуёво. На своей жопе испытал.
Сам-то я на пляж не хожу, нечего мне там делать.
Я не знаю, над какими проектами вы работаете, но в случае с битриксом или другими фреймворками, у которых большое кол-во файлов, экспериментальным путем у меня получилось, что с точки зрения ресурсов выгоднее иметь жирный сервер и тонкие клиенты.
они начинают толкаться, отсутствует версионность, бранчевание, присутствуют конфликты и одновременные редактирования одного файла, нельзя засчитать какие то отметки в развитии проекта за стабильные или минорные
один может зайти и всё удалить к чертям, ну или не удалить, сломать
у нас фронтендщики почему-то не гнушаются забирать всё что можно по проекту из гита, прямо из идеи запускать себе локальный томкат и отлаживаться со своей локальной версии - хотя ни строчки на жабе даже не пишут
возможно, потому что это одно действие мышкой
ну, файлов не 15к, на порядки меньше, но ведь и гит сливает только то, что отличается
почему в php+битрикс такая жопа...
Не сгущай краски, Ди. У каждого разработчика своя домашняя директория со своим клоном проекта.
я просто невнимательный лошара
Поэтому ваш вывод о жопе в битриксе и пхп основан на некорректной догадке. У меня почему-то именно в плане тонких клиентов жопа не наблюдается. Там есть жопы в другом, но это тема для другого разговора.
Практически нигде больше такой ерунды не наблюдается. Во всех нормальных средах бинарники/исходники фреймворка чётко отделены от бинарников/исходников проекта.
Возможно, я просто что-то не осилил, но такая практика повергает меня в шок.
У них большая проблема из-за политики обратной совместимости, но это бизнес, они не могут так спокойно отказаться от своих обязательств перед клиентами. За это, кстати, им большой плюс. В отличие от того же php, где с каждой новой версией на обратную совместимость забивают все больше.