За последние 24 часа нас посетили 48886 программистов и 1804 робота. Сейчас ищут 2524 программиста ...

Подключение файлов или много строк кода

Тема в разделе "Прочие вопросы по PHP", создана пользователем DZEN, 28 ноя 2007.

Статус темы:
Закрыта.
  1. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    На работе началась настоящая война - сколько строк кода допустимо в одном файле php?
    У кого какое мнение по этому поводу?
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    код разделяется по логике, а не строкам или символам. Так, чтобы можно было без проблем делать один модуль вдвоем параллельно.
    Методично разделяю 100кб-ные файлы на несколько. Меньше 20к не получается, разрастаются )).
     
  3. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Ну, в среднем сколько строк.
    Имеется ввиду что пока ничего не оптимизировано, после ";" идет перенос строки и т.д.
     
  4. Anonymous

    Anonymous Guest

    287 строк вполне достаточно.

    287 — это номер моего дома. ^_^
     
  5. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    if ($a) { echo $b; }


    if ($a)
    {

    echo $b;

    }
     
  6. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Это положило начало... Чему-то :)

    PHP:
    1.  
    2. if($a) echo $b;
    3.  
    4. if($a)
    5. {
    6.    echo $b;
    7.    echo $c;
    8. }
    Вот содержание кода
    PHP:
    1.  
    2.     if(isset($_SESSION['user_num']))
    3.     {
    4.         $q="SELECT id_comm FROM comments WHERE add_time >= NOW() - INTERVAL 1 HOUR AND user_id = {$_SESSION['user_num']} AND news_id = {$_GET['n']}";
    5.         if($r=mysql_query($q)) { if( mysql_num_rows($r) < 1 ) { mysql_free_result($r); DrawCommentForm(); } }
    6.     }
    7.     elseif($r=mysql_query("SELECT news_id FROM comm_spam WHERE ip_adress='{$_SERVER['REMOTE_ADDR']}' AND news_id={$_GET['n']}"))
    8.         if( mysql_num_rows($r) < 1 ) { mysql_free_result($r); DrawCommentForm();}
    И так 3000 строк.
     
  7. Anonymous

    Anonymous Guest

    не, ну 3000 это много. Дело не в каком то техническо параметре — а в банальном человеческом восприятии. Я например знаю, что у меня предел нормального осмысления — около 1200 строк. Но у молодняка в моем отделе около 300-400 строк. Надо разбивать на функциональные блоки, разносить функции...

    Тут с ООП удобен принцип — один класс - один файл.
     
  8. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Осмысление здесь не при чем, главное что бы сервер не обращался к одному и тому-же файлу.
    Посетителей будет много, а почти весь код в "index.php" :).
    Я то в коде без проблем разбираюсь, просто код трудно разбить на файлы.
    Как начали разбивать один файл - приходиться практически все остальные подключать.
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот те которые нужно подключать не всегда можно отделить, те которые вообще редко отделить обязательно, остальные отделять нет никакого смысла кроме эстетического (что тоже немаловажно)
     
  10. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    плохо читаемо, надо разворачивать ифы. И осмысление вполне причем, напрямую влияет на скорость отладки и модификации.

    3000 много. Один класс на 50к еще кое-как туда-сюда, дальше уже пора задумываться "а правильно ли я делаю"
     
  11. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    1 фаил = 1 класс. норм
     
  12. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Я то все прочитать смогу, мне и не такое давали смотреть, хотя рука непроизвольно тянется подправить.
    Думаю если я понял, что написали - значит и остальные программеры поймут ( тем более опытным прогером меня трудно назвать).
    Здесь эстетический момент или понимание кода ничего не играет, тем более в конце концов проверять код буду только я ( предположительно), и вся ответственность за все проекты на мне будет лежать ( ошибка - виноват я, а не прогер :) ).
    Мне важна только скорость сервера.
    Так что здесь вопрос был только в целесообразности такой разбивки.
     
  13. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    ты не прав.
     
  14. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Ещё раз повторяю, что никто кроме меня и программиста код пересматривать не будет, соответственно читабельность необходима только нам.

    Прошу обосновать.
     
  15. Anonymous

    Anonymous Guest

    Серверу глубоко пофиг, он все равно соптимизирует скрипт перед исполнением.
    А вот про пофигизм к чистете кода... чтож, опыт обоснует. Потом. И больно. )
     
  16. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    + не более 200 строчек кода/метод + не строить слоёный пирог из IF-ов + форматирование + документация. Не код будет, а конфетка :)
     
  17. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Я наверное не пуганый :).
    Когда на C# или Delphi програмил, согласен, держать в чистоте все надо было. Но в сайтостроении (тем более когда проект не будет переделываться) такого не замечал.
    Пол тыщи мой выбор, или сайт превращается в нагромождение файлов.

    P.S. Вижу тема была создана не напрасно.
     
  18. Clone

    Clone Guest

    Имхо 1000 строк в файле - предел нормальной читабельности. И даже эти 1000 строк должны быть грамотно оформлены. Разумная экономия развёртывания(if ($a) echo 1;), максимальное уменьшение дублируемости, объявление функций отдельно - модуль отдельно и т.д.
     
  19. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    DZEN
    да вот как раз наоборот, имхо, в Дельфи и С дебаг-онлайн, по процедуркам можно прыгать, пошагово отлаживать, а в ПХП только эхи расставлять...

    вроде у пхп предел на файл около 2Гб, не парьтесь :)
    лучше скажите, а есть ли ограничение на длину строки? :) а то у меня некоторые регулярки в блокноте на несколько строк сами складываются (уж больше 1024 символов) :)
     
  20. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Я когда по субботам подрабатывал преподом, у меня был студент который называл все переменные: BOLT1, BOLT2, BOLT3, BOLT4, BOLT5 ...
    Читабельность была нулевая на первой же строке ;).
     
  21. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    DZEN
    мало информации, может там подбор остнастки для станков каких, и болты там нужны, вот и переменные :)
     
  22. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    К вопросу об свертке кода.
    0)
    if ($a) $b=$c;
    я стараюсь писать if ($a) { $b=$c; }
    потом меньше проблем с циклами, читается вроде нормально. Если одна длинная строка - разворачиваю

    1)

    PHP:
    1. if($tz==9   && $time9 ==1) $treug=1;
    2. if($tz==10  && $time10==1) $treug=1;
    3. if($tz==11  && $time11==1) $treug=1;
    4. if($tz==12  && $time12==1) $treug=1;
    5. if($tz==13  && $time13==1) $treug=1;
    6. if($tz==14  && $time14==1) $treug=1;
    7. if($tz==15 6 && $time15==1) $treug=1;
    8. if($tz==16  && $time16==1) $treug=1;
    9. if($tz==17  && $time17==1) $treug=1;
    10. if($tz==18  && $time18==1) $treug=1;
    11. if($tz==19  && $time19==1) $treug=1;
    12. if($tz==20  && $time20==1) $treug=1;
    заменил на
    $tzz='time'.$tz;
    if ($$tzz) $treug=1;

    коротко, но не нравится само использование $$

    2)
    (!empty($_SESSION['filter'])) ? $smarty->assign("filter", $_SESSION['filter']) : $_SESSION['filter'] = '';
    коротко, но имхо уже хуже читаемо.

    3) всякие наборы case и elseif стараюсь превращать в
    $choise=array();
    $choise[0]="Вариант 0";
    ...

    $out=$choise[$n];
     
  23. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Если кто такое напишет - убийство такого человека считается экзорцизмом а не убийством.
     
  24. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Вообще все переменные и в любых прогах,так что там не про станки, там что-то личное ;).
    Может в понедельник с утра будет ничего не понятно - но написано то профессионально!
     
  25. Clone

    Clone Guest

    armadillo, в третьем случае можно просто array('choise1', 'choise2',...,'choiseN'); записать. $$ тоже почти не использую, ибо пока мышление не то. Ну а первый случай мне непонятен. Какие проблемы с циклами?
    Кстати, ещё, когда много элементов в массиве объявляю, пишу примерно так:
    PHP:
    1. $arr = array(
    2.     'element1',
    3.     'element2,
    4.    'element3',
    5.    'element4',
    6.    'element5',
    7.    'element6'
    8. );
     
Статус темы:
Закрыта.