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

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

Допустим, вы пишете скрипт на php… и пишете его, не особо заботясь о читабельности. Да, вы пишете его по нескольку часов изо дня в день, наизусть помните, что означает тот или иной фрагмент, что означает та или иная переменная.

Но вот вы написали скрипт. И всё! А потом захотели его отредактировать. Например, ошибка в коде, которую вы раньше не заметили.Вы открываете его и видите, например, такое:if ($a==$b echo 'Результат: '.x($s);}

Вы что-нибудь понимаете? Можете сказать, что делает этот фрагмент кода? В чём смысл? Конечно, нет! Но это только одна строка кода… а скрипт может занимать и 10, и 20, и 50 строк… и что тогда? Сидеть полдня и вспоминать, что значат переменные $a и $b и искать, где вы описали функции w() и x()?Хорошо, а теперь взгляните на такой вот кусок кода:if ($result==$znachenie //Обработка результата echo 'Результат: '.Preobr($OKresult); //Преобразование данных в понятный формат.}

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

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

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

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

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

А сейчас хочу вас немного предостеречь. Я иногда вижу и варианты, подобные этим:if ( $resultata_rabotu==$znachenie_iz_bufera_obmena //Функция обработки результата, которая сначала делает то-то, а потом вот это и ещё это. echo 'Результат: '.Preobrazovanie_resultata_v_drygoi_format( $good_resultat_rabory ); //Функция преобразования данных в понятный формат, которая преобразует данные из такого-то формата в такой-то для лучшего понимания результата человеком. }

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

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

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