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

igortik

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

PHP:
<?php
class MyClass{

 public MyMethod(){

 $id = 1;

  ob_start();
?>
 
 SELECT * FROM table WHERE id=<= $id ?>
 .....

 ....
<?php
 $result = ob_get_clean();

 return $result;
 }
}
?>
Какие, на Ваш взгляд, еще можно дать аргументы так не делать, помимо бурной реакции на стиль и подход?
 

Фанат

oncle terrible
Команда форума
Эх, где ж те времена, когда из теории я перемещал только прямиком в корзину. Старею...

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

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

igortik

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

igortik

Новичок
Фанат
самое интересное, что там речь не о бизнес-логике, а о работе со строками (формирование, например, строки mysql запроса)
 

craz

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

igortik

Новичок
Как мне говорят, мол буфер помещается в стек, то ничего страшного в этом нет... Вот и меня пугает, что вроде как технически ничего страшного в этом нет.
А мне нужен аргумент, действительный аргумент, чтобы не бросаться критикой о говнокоде в адекватного человека :(
 

Фанат

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

непонятно, чем не устраивает простая конкатенация.
непонятно, на кой под один запрос выделять ажно целый метод целого класса. какая логика?

в общем, хотелось бы менее абстрактного примера.
 

igortik

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

igortik

Новичок
в общем, хотелось бы менее абстрактного примера.
Боюсь, что пример не абстрактный :( именно такой класс я сегодня видел, только там кода с короткими дескрипторами было в 10 раз больше и "обернуто это было в буфер". Таким образом методы собирают строку запроса... Так вот, мне нужен аргумент на счет ob_start, хотя, я понимаю, что молотком можно и борщ мешать :(((
 

Фанат

oncle terrible
Команда форума
1. оверинжиниринг. Класс для сборки SQL запроса - это никому не нужное усложнение
2. write-only код. Я понимаю, что приятно чувствовать себя офигенным оригиналом и писать на РНР арабской вязью, но иногда надо думать о тех, кто будет потом этот код поддерживать
 

craz

Нестандартное звание
Вот понимаешь ... у меня тоже примерно такое крутится, но человек, который так пишет, просто стал преемником такого подхода и является очень неплохим парнем и надежным коллегой, а для переубеждения, что это крайне плохо - у меня нет слов, помимо тех, что написал ты :(
иногда человеку этого бывает достаточно, он просто не видел нормального кода значит, а то что он пишет... ядреный лсдешный приход...

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

В твоем случае он рядом с тобой находиться, а за голову он закидывает две ноги - это не нормально.
 

igortik

Новичок
Фанат
На счет п.1 - там не только собирается запрос, но он еще и выполняется и потом результат прогоняется таким же способом через foreach :(
п.2. - их так учил тимлид, от которого группа молодых разработчиков получила это в наследство, теперь вопрос как переубедить, что это в корне не верно ... остается говорить, что говнокод?
 

craz

Нестандартное звание
Фанат
На счет п.1 - там не только собирается запрос, но он еще и выполняется и потом результат прогоняется таким же способом через foreach :(
п.2. - их так учил тимлид, от которого группа молодых разработчиков получила это в наследство, теперь вопрос как переубедить, что это в корне не верно ... остается говорить, что говнокод?
это не просто говнокод - это не код вообще.
надо убеждать другим более красивым кодом мне кажется

http://wiki.agiledev.ru/doku.php?id=tdd:tdd_into_command

только применить не к Tdd
 

fixxxer

К.О.
Партнер клуба
На приведенном примере нифига не ясно, зачем писать этот ад вместо
PHP:
"SELECT * FROM table WHERE id=$id"
.
Возможно, ситуацию прояснит то, что между точками - но даже если и прояснит (т.е там скажем циклы), это все равно ад. :)
с одной стороны, я знаю одного чела, который использует шаблонизатор для сборки SQL запросов.
:)
ну тут все просто, я как-то начал писать либу по мотивам DbSimple, только захотел полноценные условия и циклы, и понял, что я пишу шаблонизатор
 

igortik

Новичок
я уже приводил примеры на счет ошибок приложения, связанных с буфером, если он где-то не будет закрыт, но пока не помогает :( аргумент один - "я делаю это автоматически и уже привык, оно ведь работает нормально"
 

fixxxer

К.О.
Партнер клуба
Слово "адекватность" и аргументация "ну ведь работает же" мне кажутся мало совместимыми =)
 

igortik

Новичок
На приведенном примере нифига не ясно, зачем писать этот ад вместо
PHP:
"SELECT * FROM table WHERE id=$id"
.
Возможно, ситуацию прояснит то, что между точками - но даже если и прояснит (т.е там скажем циклы), это все равно ад. :)

:)
ну тут все просто, я как-то начал писать либу по мотивам DbSimple, только захотел полноценные условия и циклы, и понял, что я пишу шаблонизатор
вот там тоже в методе он использует условия, использует циклы, при этом закрывая дескриптор и выводит подстроку ... у меня нет слов, помогите мне аргументами... я завтра просто покажу эту тему и вынесу ее на обсуждение :(
 
Сверху