Поругайте стиль

craz

Нестандартное звание
"я делаю это автоматически и уже привык, оно ведь работает нормально"
я в начале всего этого дела работал именно с таким человеком, он по привычке и "потому что я так умею, значит так быстрее" писал любой код, который мог работать только с малым ограниченным числом исходных условий... то есть был дырявый аж п..ц
 

weregod

unserializer
PHP:
$foo = 123;

$text = <<<EOT
Foo is {$foo}
EOT;

echo $text;
Увольняйте его нах.
В обоих случаях при таком стиле построения SQL-запросов у него будут постоянные уязвимости для SQL-инъекций.
 

igortik

Новичок
я в начале всего этого дела работал именно с таким человеком, он по привычке и "потому что я так умею, значит так быстрее" писал любой код, который мог работать только с малым ограниченным числом исходных условий... то есть был дырявый аж п..ц
в нашем случае там работа с CI, а такой код только в моделях, но мне от этого не легче.
Человек этот написал реально много проектов и имеет большой опыт веб-разработки, просто ему в голову кто-то в бил такой стиль и он к этому привык :(
Да и я никак не могу аргументировать, кроме как, сказать что это ГОВНОКОД :( А вроде не корректно как-то по отношению к людям такое говорить
 

fixxxer

К.О.
Партнер клуба
Говнокод - это характеристика кода, а не человека.
Все мы когда-то писали (и временами пишем) говнокод. В этом нет ничего страшного.
Другое дело, что человек вбил себе в голову антипаттерны и не хочет переучиваться, вот это плохо.
В таких случаях помогают стандарты кодирования - всегда можно сослаться на их нарушение и все.
 

igortik

Новичок
PHP:
$foo = 123;

$text = <<<EOT
Foo is {$foo}
EOT;

echo $text;
Увольняйте его нах.
В обоих случаях при таком стиле построения SQL-запросов у него будут постоянные уязвимости для SQL-инъекций.
Как-то я не подумал про <<<EOT, надо будет предложить :))
По поводу инъекций - там банальные статичные строки :( иногда открываются дескрипторы и делается echo какого-нить значения переменной из массива в foreach :( + приведение к нужному типу данных (забыл добавить)
 

craz

Нестандартное звание
в нашем случае там работа с CI, а такой код только в моделях, но мне от этого не легче.
Человек этот написал реально много проектов и имеет большой опыт веб-разработки, просто ему в голову кто-то в бил такой стиль и он к этому привык :(
Да и я никак не могу аргументировать, кроме как, сказать что это ГОВНОКОД :( А вроде не корректно как-то по отношению к людям такое говорить
не понятно чем не аргумент то?
 

craz

Нестандартное звание
Понимаешь, в каждой ситуации бывает не только КОД, но и Отношения с Людьми. Вот при этом :(
ну так не характиризуй челоека, пойди сним покури/попей кофе и скажи "код у тебя мудацкий, не могу позволить себе, чтобы такой ограху.ный чел писал такой код, давай вместе почитаем/покритикуем известные проекты на гихабе?"
 

igortik

Новичок
fixxxer
не мог бы ты привести авторитетные ссылки по этому вопросу, именно в данном контексте ... будет очень полезно ...
 

igortik

Новичок
ну так не характиризуй челоека, пойди сним покури/попей кофе и скажи "код у тебя мудацкий, не могу позволить себе, чтобы такой ограху.ный чел писал такой код, давай вместе почитаем/покритикуем известные проекты на гихабе?"
именно с этой целью я и создал эту тему, чтобы завтра адекватно разрешить вопрос и постараться переубедить мнением авторитетных программистов + ссылками :)
 

weregod

unserializer
Тогда примите предложение fixxxer про стандарты оформления кода, вводите прекоммит хуки, такое решение заставит переписать все, несоответствующее стандартам при последующих коммитах.
Ресурсоёмко, но действенно.
 

igortik

Новичок
Тогда примите предложение fixxxer про стандарты оформления кода, вводите прекоммит хуки, такое решение заставит переписать все, несоответствующее стандартам при последующих коммитах.
Ресурсоёмко, но действенно.
То, что мы перепишем эти модели - это факт, я не смогу просто молча согласиться пустить их в работу :(
Пугает то, что кроме как правилами оформления (а это лишь договоренности и условности) и оскорблением про говнокод - нет пока аргументов на счет буфера. Тогда бы вопрос с дескрипторами, думаю, был бы снят сам собой и мы бы пришли к работе со строками в php, как это задумано самими разработчиками.
Я и сам не силен в том, что там с буфером на более низком уровне, кроме понимания, что есть иерархия и стек... но в контексте обсуждения этого, увы, не достаточно
 

fixxxer

К.О.
Партнер клуба
Я бы вообще сослался на то, что тут легко допустить sql injection, а в CI есть (есть же? должны быть!) prepared statements которые это исключают в принципе.

Потом подвести под то что надо чтобы весь код был в одном стиле.
 

Фанат

oncle terrible
Команда форума
ты бы не стеснялся, а выложил код какого-нибудь класса.
чтобы можно было говорить предметно, а не размахивать руками в воздухе
хотя, конечно, буфферинг там, где нужна простоя конкатенация - это всё равно останется бредом, при любом подходе.
 

igortik

Новичок
ты бы не стеснялся, а выложил код какого-нибудь класса.
чтобы можно было говорить предметно, а не размахивать руками в воздухе
хотя, конечно, буфферинг там, где нужна простоя конкатенация - это всё равно останется бредом, при любом подходе.
К сожалению, код остался в офисе. Но я выложил, повторюсь, не абстрактный пример, а абсолютно реальный фрагмент и контекст применения буфера + дескрипторов.
Разница этого примера и того в разных mysql запросах и объеме кода с открывающимися сокращенными php-дескрипторами <?= и вся эта солянка находится в рамках метода класса, обернутая ob_start() ... ob_get_clean()
 

Фанат

oncle terrible
Команда форума
не страшно. завтра ты в офисе же будешь?
про "абсолютно реальный фрагмент" не стоило говорить. а то мы начнем сомневаться уже в твоей адекватности.
 

Фанат

oncle terrible
Команда форума
проблемы, как я понимаю, с этим кодом две
1. использование идиотского сочетания эхо+буфферинг+выход из пхп режима вместо нормальной конкатенации.
Чтобы показать весь идиотизм этого метода, надо показать пример кода, который делает все то же самое, но в 2 раза проще. Не видя кода это сделать невозможно.
2. архитектурная проблема, явное смешивание слоев. Тут тоже ничего нельзя сказать по классу myslass и методу mymethod.
так что или показывай код, или проодолжай стенать в одиночестве.
 

igortik

Новичок
Фанат
Видимо, ничего не остается, как продолжить "стенать в одиночестве", не ехать же в офис, ты просто не оставляешь мне выбора
 

weregod

unserializer
igortik, вы что, на оборонку работаете, нет доступа к репам кода снаружи офиса? ;)
да, придётся стенать тогда
 

Girakon

Новичок
ну вобще по мимо очевидной не читабельности кода, это как минимум лишнии вызовы функций для начала и окончания буферизации, а также вероятность уязвимости про которую не раз умпомянули выше. Хотел бы я глянуть на проекты которые написал этот человек
 
Сверху