<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:10pt"><div><span>Сделал бы вот так:</span></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13.3333px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><span>my $sql = posts_sql_view();<br><br>my @where = ();<br><br>do { push @where, 'ty.id=?'; push @params, $type }           if $type;<br>do { push @where, 'p.id=?';  push @params, $id; $limit = 0 } if $id;<br><br>$sql .= join ' AND ', @where if @where;<br><br>$sql .= ' ORDER BY id DESC'
 unless $id;<br>$sql .= " LIMIT $limit" if $limit;</span></div><div style="display: block;" class="yahoo_quoted"> <br> <br> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 10pt;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> On Wednesday, 18 December 2013, 1:14, Nick Knutov <mail@knutov.com> wrote:<br> </font> </div>  <div class="y_msg_container">У меня в коде в некоторых функциях, в зависимости от входных параметров,<br>конструируются разные sql запросы. Пример:<br><br>my $sql = posts_sql_view();<br>$sql .= ' WHERE ' if $type or $id or $main;<br>do { $sql .= ' ty.id=? '; push @params, $type;} if $type;<br>do { $sql .= ' AND p.id=? LIMIT 1'; push @params, $id } if $id;<br>$sql
 .= ' ORDER BY id DESC ' unless $id;<br>do { $sql .= ' LIMIT ? ' ; push @params, $limit } if $limit and not $id;<br><br>Мне не нравится как это визуально выглядит. Как бы вы это переписали,<br>чтобы было понятнее и читабельнее?<br><br>ps: в некоторых других случаях можно было бы использовать && вместо<br>do{}, но не тут.<br><br>pps: ORM предлагать и обсуждать не надо. Как минимум потому, что запросы<br>сложные и сложность/стоимость проверки того, что генерирует ORM<br>многократно выше любого профита от ORM в данной ситуации.<br><br>-- <br>Best Regards,<br>Nick Knutov<br><a href="http://knutov.com/" target="_blank">http://knutov.com</a><br>ICQ:
 272873706<br>Voice: +7-904-84-23-130<br>-- <br>Moscow.pm mailing list<br><a ymailto="mailto:moscow-pm@pm.org" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br><br><br></div>  </div> </div>  </div> </div></body></html>