Каким должен быть код интернет-страниц? Читабельность vs размер. Часть 2. PHP

Реклама

В первой части статьи мы говорили про цветочки, т. е. про html код. А теперь давайте про ягодки — php код!

Допустим, вы пишете скрипт на php… и пишете его, не особо заботясь о читабельности. Да, вы пишете его по нескольку часов изо дня в день, наизусть помните, что означает тот или иной фрагмент, что означает та или иная переменная.
Но вот вы написали скрипт. И всё! А потом захотели его отредактировать. Например, ошибка в коде, которую вы раньше не заметили.
Вы открываете его и видите, например, такое:
if ($a==$b && ($c≥$d || $q≠$p)) {$s=w ($a); echo 'Результат: '.x ($s);}

Вы что-нибудь понимаете? Можете сказать, что делает этот фрагмент кода? В чём смысл? Конечно, нет! Но это только одна строка кода… а скрипт может занимать и 10, и 20, и 50 строк… и что тогда? Сидеть полдня и вспоминать, что значат переменные $a и $b и искать, где вы описали функции w () и x ()?

Реклама

Хорошо, а теперь взгляните на такой вот кусок кода:
if ($result==$znachenie && ($max≥$min || $otvet≠$error))
{
$OKresult=obrabotka ($result); //Обработка результата
echo 'Результат: '.Preobr ($OKresult); //Преобразование данных в понятный формат.
}

Согласитесь, в последнем коде даже не разбирающийся в программировании человек уже что-то понимает!
Хотя оптимизаторы сайтов, наверное, на меня сейчас накинутся с гневными ругательствами: мол, не к тому приучаю! Этак и страница будет весить, как слон! В результате и загрузка дольше, и трафик больше будет, да и вообще! Чем меньше размер — тем лучше!
В принципе они правы, ведь первый кусок кода весит 71 байт, а второй 223 байта…

Реклама

Да, к сожалению, при арифметическом росте читабельности геометрически растёт вес страниц, но что поделаешь. Я специально проверял. Я удалил все лишние пробелы, переходы на новую строку и т. д. на одной их своих страниц. И страница уменьшилась в размере в 6, 7 раз! Это при условии, что я переменным не менял имена на более короткие в один-два символа, а так можно было бы уменьшить размер в 10 или более раз!

Впечатляет? И зачем же такие жертвы, спросите вы? Если вы хоть раз писали длинный скрипт, то вы меня, наверное, поймете. Если же нет, то сейчас объясню.
Представьте, вы пишете скрипт. Пишете именно как в первом варианте — с непонятными именами переменных, максимально сокращая вес страниц, не делая ни одного лишнего пробела, и пишете всё чуть ли не в одну строчку. Да, во время написания вы помните, где и в каком месте у вас что записано, какая переменная что означает. И вот вы написали…

Реклама

А через пару месяцев вы хотите исправить скрипт… и что вы видите?! Вы уже не вспомните, что означает та или иная переменная, что означает тот или иной кусок кода. Более того, не видно, где начинаются и где заканчиваются циклы, условия и т. д. И поверьте, вам придётся потратить минимум полчаса на то, чтобы разобраться в своём же скрипте! А если скрипт большой и сложный, а вы не профессионал — минимум часа полтора! А изменения вы, может, успеете и за 10 минут внести!

Вам хочется каждый раз тратить столько времени на «вспоминание» того, что, где и когда вы написали, как это всё работает, что это означает и что со всем этим делать? Если да — то пожалуйста, пишите всё, как хочется. А если нет, называйте переменные «по-человечьи»! И не стесняйтесь комментариев, они пока ещё не принесли никому такого катастрофического вреда, чтобы от них избавляться. Поверьте, когда где-то в шестиста строках нечитабельного php кода есть «не явная» ошибка (т.е. когда в целом всё работает, но не всегда так, как нужно), то поиск подобной ошибки превращается в многочасовой ад!

Реклама

Помните поговорку: «скупой платит дважды»? Как ни удивительно, но для сайтостроения она тоже применима! Поленившись потратить 20−30 минут на то, чтобы сделать код читабельным, вы каждый раз при редактировании будете тратить эти же 20−30 (если не больше) минут только на то, чтобы разобраться в коде.

А сейчас хочу вас немного предостеречь. Я иногда вижу и варианты, подобные этим:
if ($resultata_rabotu==$znachenie_iz_bufera_obmena && ($maximal_chislo_polsovatela≥$minimum_chislo_reshenia || $otvet_vychislenia_vurashenia≠$error_vo_vrema_rassgeta)) //Проверка условия такого-то в зависимости от того-то и при тех-то обстоятельствах.
{
$good_resultat_rabory = obrabotka_resyltata_vyshiskenia ($resultata_rabotu); //Функция обработки результата, которая сначала делает то-то, а потом вот это и ещё это.

Реклама

echo 'Результат: '.Preobrazovanie_resultata_v_drygoi_format ($good_resultat_rabory); //Функция преобразования данных в понятный формат, которая преобразует данные из такого-то формата в такой-то для лучшего понимания результата человеком.
}

Ну всё хорошо, но в меру! Ведь комментарии — это не сочинения-рассуждения, а имена переменных — это имена, а не словосочетания. Не нужно излишеств, старайтесь писать понятно, но не нужно комментировать совершенно очевидные вещи и писать километровые имена переменных. Это слишком!

Итак, подведём итог. Ни в коем случае не нужно гнаться за минимальным весом страницы, борясь за каждый байт в ущерб читабельности кода. Внутренний код должен быть таким, чтобы в нём при желании можно было легко и быстро разобраться! Но и не стоит писать и расписывать каждую мелочь.

Реклама

Конечно, все люди разные и кому-то, чтобы понять принцип работы того или иного скрипта, комментарии вообще не нужны — он и так всё понимает, а кому-то без них не обойтись! Всё относительно. Конечно, нет никаких особых критериев того, как писать код. Пишите код так, чтобы вы сами его поняли и разобрались в нём довольно быстро, а не так: «работает, и вес маленький, а то, что ничего не понятно и всё в одну строчку… ну так издержки производства!». Это заранее провальный подход, вы в результате проиграете больше, чем выиграли — ведь скупой платит дважды!

Реклама