Рефакторинг кода - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Mon, 23 Dec 2024 12:51:53 +0300 11. <strong>Башка</strong>, Вроде норм, но пока останусь на своем варианте https://visavi.net/topics/41842/676208 Рефакторинг кода Вантуз-мен Sat, 10 Jan 2015 22:58:10 +0300 Сообщения https://visavi.net/topics/41842/676208 12. <strong>ZiGR</strong>, он автоматом генериться, нужно только пару значений вписать. https://visavi.net/topics/41842/676200 Рефакторинг кода Артур Sat, 10 Jan 2015 22:05:24 +0300 Сообщения https://visavi.net/topics/41842/676200 На скорую руку.<br> <br> Не думаю, что работать будет больно шустро, но здесь нет лишних проходов по одной и той же строке с целью замены. https://visavi.net/topics/41842/676198 Рефакторинг кода Артур Sat, 10 Jan 2015 21:14:48 +0300 Сообщения https://visavi.net/topics/41842/676198 9. <strong>VITAMIN</strong>, нет, я был не в курсе. Спасибо, что поправил, теперь я пуду писать код намного лучше! https://visavi.net/topics/41842/676197 Рефакторинг кода Артур Sat, 10 Jan 2015 20:45:56 +0300 Сообщения https://visavi.net/topics/41842/676197 Замени $i++ на ++$i<br> <img src="https://visavi.net/uploads/stickers/D.gif" alt="D"> <br> <br> <em><span style="font-size:x-small">Добавлено через 05:39 сек.</span></em><br> <blockquote class="blockquote"><strong>Башка</strong> (10 Января 2015 / 17:11)<br> А iterate зачем?<br> <br> <em><span style="font-size:x-small">Добавлено через 06:14 сек.</span></em><br> <pre class="prettyprint"> &lt;?php public function parse($source) { $source = nl2br($source); foreach ($this-&gt;parsers as $name =&gt; $parser) { for ($i=0; $i &lt;= (isset($parser&#91;&#039;iterate&#039;]))? $parser&#91;&#039;iterate&#039;] &#58; 1; $i++) { if (isset($parser&#91;&#039;callback&#039;])) { $source = preg_replace_callback($parser&#91;&#039;pattern&#039;], array($this, $parser&#91;&#039;callback&#039;]), $source); } else { $source = preg_replace($parser&#91;&#039;pattern&#039;], $parser&#91;&#039;replace&#039;], $source); } } } return $source; } </pre> <br> Но ООП какое то натянутое, если честно. Да и трудозатратное решение выходит.</blockquote> <br> Ты вкурсе что твой варик с <br> for ($i=0; $i &lt;= (isset($parser[&#039;iterate&#039;]))? $parser[&#039;iterate&#039;] : 1; $i++)<br> будет еще более тормозной.<br> Т.к. это условие будет проверятся с каждой итерацией. https://visavi.net/topics/41842/676195 Рефакторинг кода VITAMIN Sat, 10 Jan 2015 20:29:23 +0300 Сообщения https://visavi.net/topics/41842/676195 7. <strong>Vantuz</strong>, щас накидаю что нибудь интересное. https://visavi.net/topics/41842/676193 Рефакторинг кода Артур Sat, 10 Jan 2015 19:48:59 +0300 Сообщения https://visavi.net/topics/41842/676193 4. <strong>Башка</strong>, да вот как раз и хотелось бы избавиться от ненужных прогонов если нет замен при первой итерации<br> <br> <em><span style="font-size:x-small">Добавлено через 02:40 сек.</span></em><br> Ну класс конечно так себе согласен, но по крайней мере работает намного быстрее всех других парсеров которые тестировал<br> к примеру <a href="http://jbbcode.com/" target="_blank" rel="nofollow">http://jbbcode.com/</a> хороший расширяемый парсер, но работает более чем в 50 раз медленнее чем который я привел выше https://visavi.net/topics/41842/676187 Рефакторинг кода Вантуз-мен Sat, 10 Jan 2015 18:32:09 +0300 Сообщения https://visavi.net/topics/41842/676187 5. <strong>TakteS</strong>, дело вкуса<br> <br> <em><span style="font-size:x-small">Добавлено через 05:29 сек.</span></em><br> Кстати, в foreach не нужна переменная $name. https://visavi.net/topics/41842/676185 Рефакторинг кода Артур Sat, 10 Jan 2015 17:51:10 +0300 Сообщения https://visavi.net/topics/41842/676185 4. <strong>Башка</strong>, С воздухом между строк выглядит все-таки более приятно. https://visavi.net/topics/41842/676184 Рефакторинг кода юЮЮфюв Sat, 10 Jan 2015 17:42:06 +0300 Сообщения https://visavi.net/topics/41842/676184 А iterate зачем?<br> <br> <em><span style="font-size:x-small">Добавлено через 06:14 сек.</span></em><br> <pre class="prettyprint"> &lt;?php public function parse($source) { $source = nl2br($source); foreach ($this-&gt;parsers as $name =&gt; $parser) { for ($i=0; $i &lt;= (isset($parser&#91;&#039;iterate&#039;]))? $parser&#91;&#039;iterate&#039;] &#58; 1; $i++) { if (isset($parser&#91;&#039;callback&#039;])) { $source = preg_replace_callback($parser&#91;&#039;pattern&#039;], array($this, $parser&#91;&#039;callback&#039;]), $source); } else { $source = preg_replace($parser&#91;&#039;pattern&#039;], $parser&#91;&#039;replace&#039;], $source); } } } return $source; } </pre> <br> Но ООП какое то натянутое, если честно. Да и трудозатратное решение выходит. https://visavi.net/topics/41842/676181 Рефакторинг кода Артур Sat, 10 Jan 2015 17:11:20 +0300 Сообщения https://visavi.net/topics/41842/676181 2. <strong>ZiGR</strong>, последняя редакция тут <a href="https://github.com/visavi/rotorcms/blob/develop/includes/classes/BBCodeParser.php" target="_blank" rel="nofollow">https://github.com/visavi/rotorcms/blob/develop/includes/classes/BBCodeParser.php</a> https://visavi.net/topics/41842/676180 Рефакторинг кода Вантуз-мен Sat, 10 Jan 2015 17:02:46 +0300 Сообщения https://visavi.net/topics/41842/676180 Имеется вот такой код, реально ли его упростить?<br> <pre class="prettyprint">&lt;?php /** * Метод парсинга BBCode * &#64;param string $source текст содержаший BBCode * &#64;return string распарсенный текст */ public function parse($source) { $source = nl2br($source); foreach ($this-&gt;parsers as $name =&gt; $parser) { if (isset($parser&#91;&#039;iterate&#039;])) { for ($i=0; $i &lt;= $parser&#91;&#039;iterate&#039;]; $i++) { if (isset($parser&#91;&#039;callback&#039;])) { $source = preg_replace_callback($parser&#91;&#039;pattern&#039;], array($this, $parser&#91;&#039;callback&#039;]), $source); } else { $source = preg_replace($parser&#91;&#039;pattern&#039;], $parser&#91;&#039;replace&#039;], $source); } } } else { if (isset($parser&#91;&#039;callback&#039;])) { $source = preg_replace_callback($parser&#91;&#039;pattern&#039;], array($this, $parser&#91;&#039;callback&#039;]), $source); } else { $source = preg_replace($parser&#91;&#039;pattern&#039;], $parser&#91;&#039;replace&#039;], $source); } } } return $source; } </pre> https://visavi.net/topics/41842/676169 Рефакторинг кода Вантуз-мен Sat, 10 Jan 2015 15:21:41 +0300 Сообщения https://visavi.net/topics/41842/676169