Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Потребление памяти против читабельности
Форумы портала PHP.SU » » Вопросы новичков » Потребление памяти против читабельности

Страниц (1): [1]
 

1. igosja - 05 Марта, 2015 - 10:17:48 - перейти к сообщению
Скажем, есть два варианта одной функции:
PHP:
скопировать код в буфер обмена
  1. function f_test_1($a,$b)
  2. {
  3.     return number_format(round(pow($a,2)*pow($b,3)+sqrt($a+$b),0),0,","," ");
  4. }
  5.  
  6. function f_test_2($a, $b)
  7. {
  8.     $a_pow     = pow($a, 2);
  9.     $b_pow     = pow($b, 3);
  10.     $mul_pow   = $a_pow * $b_pow;
  11.     $sum_a_b   = $a + $b;
  12.     $sqrt_sum  = sqrt($sum_a_b);
  13.     $sum_total = $mul_pow + $sqrt_sum;
  14.     $sum_total = round($sum_total, 0);
  15.     $sum_total = number_format($sum_total, 0, ",", " ");
  16.  
  17.     return $sum_total;
  18. }

В первом случае код занимает меньше места и чуть быстрее работает, но, чем больше в него будет напихано вычислений, тем сложнее его будет читать и вносить туда правки.
Во втором случае код лучше читается и поддерживается, но работает чуток медленнее и занимает больше места.
Какой вариант записи кода считается более правильным?
2. RickMan - 05 Марта, 2015 - 10:20:40 - перейти к сообщению
Что мешает первый вариант разбить на пару строк и добавить пробелы (особенно после запятых)? Это добавит ему читабельности, но создавать 100500 переменных не прийдется...
3. igosja - 05 Марта, 2015 - 10:26:26 - перейти к сообщению
RickMan пишет:
Что мешает первый вариант разбить на пару строк и добавить пробелы (особенно после запятых)? Это добавит ему читабельности, но создавать 100500 переменных не придется...

Я специально вдался в крайности, чтобы вопрос был наглядней. Я так понимаю, что лучше держаться "золотой середины"?
4. RickMan - 05 Марта, 2015 - 10:29:41 - перейти к сообщению
Ну мое мнение наврядле подойдет под показатель "мнение эксперта", но я бы держался золотой середины. На самом деле, те пару байт особо погоды в нынешнее время не делают, но и второй вариант рассписан прям как для слабоумных. Я бы просто в первом варианте форматирование сделал бы более приятное, в описании логики вынес бы в комментарий (аннотации) к функции.
5. Мелкий - 05 Марта, 2015 - 11:05:31 - перейти к сообщению
igosja пишет:
работает чуток медленнее и занимает больше места.

Это доказано профилировщиком? Какой версии PHP? А на актуальной версии PHP? Как насчёт PHP7?

Делайте код сначала читабельным (оба ваших варианта такими не являются, при том второй гораздо хуже первого именно из-за размера в LOC), а потом профилируйте.
С.Макконнелл со своим совершенным кодом неплохо вправляет мозг, почитайте. Особенно в контексте этого вопроса интересен опыт автора в ручной оптимизации кода с получением сложного куска кода, который очень тяжело поддерживать, но не давшего ничего по производительности - компилятор реализовал свои оптимизации.
6. igosja - 07 Марта, 2015 - 15:41:02 - перейти к сообщению
Мелкий пишет:
С.Макконнелл со своим совершенным кодом неплохо вправляет мозг, почитайте.
Спасибо, скачал книгу. Пробежался глазами - действительно вправляет мозг. Буду читать ее основательно.

 

Powered by ExBB FM 1.0 RC1