<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Движок сайтов S2 — О качестве кода]]></title>
		<link>https://s2cms.ru/forum/topic/255/</link>
		<description><![CDATA[Недавние сообщения в теме «О качестве кода».]]></description>
		<lastBuildDate>Wed, 12 Nov 2014 23:36:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1199/#p1199</link>
			<description><![CDATA[<p>Это здорово!</p><p>К стати, заметил вот такой код (это не о качестве):</p><div class="codebox"><pre><code>if (!defined(&#039;S2_ROOT&#039;))
    die;</code></pre></div><p>Ну вот, вы знаете что такое можно заменить на:</p><div class="codebox"><pre><code>defined(&#039;S2_ROOT&#039;) or die();</code></pre></div><p>Так еще в CodeIgniter&#039;e сделано, жалко что его забросили, интересно было бы как бы он в PHP 5 выглядел бы.</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Wed, 12 Nov 2014 23:36:30 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1199/#p1199</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1198/#p1198</link>
			<description><![CDATA[<p>Да.</p>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Wed, 12 Nov 2014 19:12:06 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1198/#p1198</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1197/#p1197</link>
			<description><![CDATA[<p>А вы собираетесь применять MVC шаблон проектирования на S2 CMS?</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Wed, 12 Nov 2014 04:47:18 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1197/#p1197</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1184/#p1184</link>
			<description><![CDATA[<div class="quotebox"><cite>Роман пишет:</cite><blockquote><p>:)</p><p>2048 - это неправильный ответ.</p><div class="codebox"><pre><code>a@a:~$ cat test.php
&lt;?php

function s2_return_bytes ($val)
{
  $val = trim($val);
  $last = strtolower($val[strlen($val) - 1]);
  switch($last)
  {
        case &#039;g&#039;:
          $val *= 1024;
        case &#039;m&#039;:
          $val *= 1024;
        case &#039;k&#039;:
          $val *= 1024;
  }

  return $val;
}

var_dump(s2_return_bytes(&#039;2m&#039;));
a@a:~$ php test.php
int(2097152)</code></pre></div></blockquote></div><p>Хм... Был не прав, прошу прощение *blush*<br />Очень хитрая тактика, возьму на вооружение :)</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 21:02:23 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1184/#p1184</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1181/#p1181</link>
			<description><![CDATA[<p>:)</p><p>2048 - это неправильный ответ.</p><div class="codebox"><pre><code>a@a:~$ cat test.php
&lt;?php

function s2_return_bytes ($val)
{
  $val = trim($val);
  $last = strtolower($val[strlen($val) - 1]);
  switch($last)
  {
        case &#039;g&#039;:
          $val *= 1024;
        case &#039;m&#039;:
          $val *= 1024;
        case &#039;k&#039;:
          $val *= 1024;
  }

  return $val;
}

var_dump(s2_return_bytes(&#039;2m&#039;));
a@a:~$ php test.php
int(2097152)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Fri, 07 Nov 2014 20:58:49 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1181/#p1181</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1179/#p1179</link>
			<description><![CDATA[<p>Если погуглить про статистику использование PHP можно найти такую ссылку: <a href="http://w3techs.com/technologies/details/pl-php/all/all">http://w3techs.com/technologies/details/pl-php/all/all</a></p><p>Судя по всему PHP4 поддерживает меньше двух процентов всех хостеров. Ну если вам прям надо поддерживать 2% которые сами по себе исчезнут, то ладно.</p><div class="quotebox"><cite>Роман пишет:</cite><blockquote><p>Хуки класть в функцию нельзя, потому что фрагменты подключаемого в них кода должны исполняться в текущем контексте. Иными словами, из тела функции не будет доступа к переменным. Подробнее о расширениях и хуках: <a href="http://s2cms.ru/docs/extensions">http://s2cms.ru/docs/extensions</a></p></blockquote></div><p>Глобальные переменные что ли? :О<br />Или инъекция кода в данный контекст? Как же вы debug проводите тут?</p><div class="quotebox"><cite>Роман пишет:</cite><blockquote><p>Функцию s2_return_bytes() так переписать нельзя, у вас ошибка. Это легко понять на простейшем тесте вроде s2_return_bytes(&#039;2m&#039;).</p></blockquote></div><p><span class="postimg"><img src="http://i.gyazo.com/35b994c81871d92338a9ffca26413040.png" alt="http://i.gyazo.com/35b994c81871d92338a9ffca26413040.png" /></span></p><p>У меня все работает нормально.</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 20:11:04 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1179/#p1179</guid>
		</item>
		<item>
			<title><![CDATA[Re: О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1177/#p1177</link>
			<description><![CDATA[<p>Про качество кода я уже писал, посмотрите это обсуждение: <a href="http://s2cms.ru/forum/post/413/#p413">http://s2cms.ru/forum/post/413/#p413</a></p><p>Аргумент в функции microtime() можно использовать с пятой версии PHP. По историческим причинам версия 1.0 поддерживает PHP 4.3.</p><p>Хуки класть в функцию нельзя, потому что фрагменты подключаемого в них кода должны исполняться в текущем контексте. Иными словами, из тела функции не будет доступа к переменным. Подробнее о расширениях и хуках: <a href="http://s2cms.ru/docs/extensions">http://s2cms.ru/docs/extensions</a></p><p>Функцию s2_return_bytes() так переписать нельзя, у вас ошибка. Это легко понять на простейшем тесте вроде s2_return_bytes(&#039;2m&#039;).</p>]]></description>
			<author><![CDATA[null@example.com (Роман)]]></author>
			<pubDate>Fri, 07 Nov 2014 19:26:14 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1177/#p1177</guid>
		</item>
		<item>
			<title><![CDATA[О качестве кода]]></title>
			<link>https://s2cms.ru/forum/post/1175/#p1175</link>
			<description><![CDATA[<p>Привет!</p><p>Движок классный и работает как надо, только вот качество кода в некоторых местах не очень.</p><p>Хочу поделится некоторыми моментами.</p><p>В index.php, на строке 11 есть такой код:</p><div class="codebox"><pre><code>list($usec, $sec) = explode(&#039; &#039;, microtime());
$s2_start = ((float)$usec + (float)$sec);</code></pre></div><p>Ее можно заменить на:</p><div class="codebox"><pre><code>$s2_start = microtime(true);</code></pre></div><p>Зачем писать лишний код если функция это может сделать это за тебя :)</p><p>Мне смутило как hook&#039;и подключаются:</p><div class="codebox"><pre><code>($hook = s2_hook(&#039;idx_pre_redirect&#039;)) ? eval($hook) : null;</code></pre></div><p>И так еще 6 раз в index.php (дальше index.php я не смотрел, но уверен что можно и там оптимизировать).<br />Можно все это в одну функцию положить, и потом вызывать там где надо:</p><div class="codebox"><pre><code>function s2_eval_hook ($id) {
    $hook = s2_hook($id);
    
    return $hook ? eval($hook) : null;
}</code></pre></div><p>И использовать ее так:</p><div class="codebox"><pre><code>s2_eval_hook(&#039;idx_pre_redirect&#039;);</code></pre></div><p>Есть еще момент в index.php на строке 69 что нужно получить содержание. Не беспокойтесь! Эта функция может возвращать значение:</p><div class="codebox"><pre><code>$return = s2_eval_hook(&#039;idx_get_content&#039;);</code></pre></div><p>Хотя я конечно против использование eval() так как это может быть небезопасно в некоторых ситуациях.<br />Функция s2_return_bytes можно сократить на это:</p><div class="codebox"><pre><code>function s2_return_bytes ($val)
{
    $val = trim($val);
    $last = strtolower($val[strlen($val) - 1]);
    switch($last)
    {
        case &#039;g&#039;:
        case &#039;m&#039;:
        case &#039;k&#039;:
            $val *= 1024;
        break;
    }

    return $val;
}</code></pre></div><p>Там точно есть еще моменты которые можно оптимизировать, но я не буду их всех сразу выкладывать :)<br />Хочу посмотреть что скажет автор.</p><p>Спасибо за внимание!</p><p>P.S.: Я не в коем случае не хочу/хотел обосрать автора.</p>]]></description>
			<author><![CDATA[null@example.com (volter9)]]></author>
			<pubDate>Fri, 07 Nov 2014 16:58:13 +0000</pubDate>
			<guid>https://s2cms.ru/forum/post/1175/#p1175</guid>
		</item>
	</channel>
</rss>
