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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Что лучше - делать код читабельным или быстрым и компактным
igosja
Отправлено: 05 Марта, 2015 - 10:17:48
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




Скажем, есть два варианта одной функции:
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. }

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

(Отредактировано автором: 05 Марта, 2015 - 10:28:29)

 
 Top
RickMan
Отправлено: 05 Марта, 2015 - 10:20:40
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Что мешает первый вариант разбить на пару строк и добавить пробелы (особенно после запятых)? Это добавит ему читабельности, но создавать 100500 переменных не прийдется...
 
 Top
igosja
Отправлено: 05 Марта, 2015 - 10:26:26
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




RickMan пишет:
Что мешает первый вариант разбить на пару строк и добавить пробелы (особенно после запятых)? Это добавит ему читабельности, но создавать 100500 переменных не придется...

Я специально вдался в крайности, чтобы вопрос был наглядней. Я так понимаю, что лучше держаться "золотой середины"?
 
 Top
RickMan
Отправлено: 05 Марта, 2015 - 10:29:41
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Ну мое мнение наврядле подойдет под показатель "мнение эксперта", но я бы держался золотой середины. На самом деле, те пару байт особо погоды в нынешнее время не делают, но и второй вариант рассписан прям как для слабоумных. Я бы просто в первом варианте форматирование сделал бы более приятное, в описании логики вынес бы в комментарий (аннотации) к функции.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Марта, 2015 - 11:05:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




igosja пишет:
работает чуток медленнее и занимает больше места.

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

Делайте код сначала читабельным (оба ваших варианта такими не являются, при том второй гораздо хуже первого именно из-за размера в LOC), а потом профилируйте.
С.Макконнелл со своим совершенным кодом неплохо вправляет мозг, почитайте. Особенно в контексте этого вопроса интересен опыт автора в ручной оптимизации кода с получением сложного куска кода, который очень тяжело поддерживать, но не давшего ничего по производительности - компилятор реализовал свои оптимизации.


-----
PostgreSQL DBA
 
 Top
igosja
Отправлено: 07 Марта, 2015 - 15:41:02
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




Мелкий пишет:
С.Макконнелл со своим совершенным кодом неплохо вправляет мозг, почитайте.
Спасибо, скачал книгу. Пробежался глазами - действительно вправляет мозг. Буду читать ее основательно.

(Отредактировано автором: 07 Марта, 2015 - 15:41:39)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB