Я часто читаю тут в блоге про говно код и все такое, но то с чем мне приходится иметь дело просто взорвет мозг. Мне довелось работать в мультинациональной компании, в которую не так давно пришли новые перспиктивные разработчики из индии и пакистана. Работаем мы с Битриксом, и я делаю скидку на незнание API и то как работает Битрикс, но мне стает печально и страшно когда я вижу такие вещи касательно PHP и простых алгоритмов. Это не люди с улицы, у всех есть высшее образование по специальности, лет 5 опыта на родине, куча сертификатов от майкросовт и циско. На выходе мы имеем вот:
1) Офигенное решение не выходить из цикла, т.к. нам это не нужно
<?foreach($newResult as $k => $v): $ct++;?>
<td id="<? ucwords(str_replace(' ', '-', $k))?>" class="driver_location <?=($ct == 1) ? 'open active_location' : 'close
'?> "><?=str_replace('-', ' ', $k)?></td>
<?continue; break;?>
<?endforeach;?> |
2) Три ошибки в маленькой строчке, хотим присвоить массив из двух ID, с помощью магического >=, ну и все это теряет смысл т.к. это фильтр для CSaseOrder:GetList
$arFilter['comfirmed_by'] >= strtotime(37666, 2766); |
3) Кому-то не нравятся запросы в запросе, а как вам такое
$rsGroups = CGroup::GetList( $by = "C_SORT", $order = "asc");
while( $res = $rsGroups->Fetch() ){
$rsUsers = CUser::GetList( $by = 'id' , $order = 'asc', array( 'GROUPS_ID' => array( $res['ID'] ) ) );
while( $user = $rsUsers->Fetch() ){
$arFilter['RESPONSIBLE'] = $user['ID'];
$rs = CTicket::GetList( $by = "ID", $order = "asc", $arFilter, $isFiltered, "Y", "Y", "Y", false );
while( $ticket = $rs->Fetch() ){
$tickets[] = $ticket;
}
}
}
|
Кто-то может сказать в защиту, но они же незнают API, да но логика-то должна быть, если у нас параметр
array( $res['ID'] ) значит это массив и туда можно отправить массив. И это свежее произведение, подобные кейсы разбирались много много раз.4) Еще сообщение от колеги:
Программисты ёпт. Меня вчера один из коллег-программистов тут спросил, как сделать подсчёт количества элементов в инфоблоке. Причём делал он это прямым запросом в бд. Спрашиваю зачем тебе это? Объясняет... я делаю запрос в базу, получаю кол-во. Потом добавляю элемент в инфоблок ( add() ), потом второй раз делаю запрос. Если количество разное, то вывожу надпись, что элемент добавился...прикинь?! |
И такое тут постоянно, каждый раз открывая код даже незнаешь чего ожидать, причем даже объяснениями и примерами ничего не меняется, спустя пару недель этот же человек выдаст снова что-то подобное. Все дело в разном менталитете, если менеджер дает задачу индусу или пакистанцу, в ответ он всегда услышит "Ноу проблем сэр!", и неважно что он незнает/неможет, медежер или босс для них хозяин, почти как бог и они не могут сказать ему "Нет". Наши специалисты чаще всего, в таких ситуациях говорят надо подумать, надо время, не все так просто и т.д. Конечно есть исключения как стой так и сдругой стороны, но в основном пока как-то так.
PS Желаю всем терпимости, в том числе и себе...