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

Часть 1. HTML

Никогда не получится сделать все так, как хочется... Это, конечно, немного несправедливо, но это факт - идеальных сайтов не бывает, да и никогда не будет! Постоянно приходится выбирать: оригинальность навигации и дизайна или юзабилити, оптимизированный или интересный читателю контент, небольшие и легкие скрипты или безопасность, устойчивость сайта к взлому. И ведь это далеко не все - этот список можно продолжать до бесконечности!

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

Вообще это вопрос вечный! Почему? А потому что всегда придется чем-то пожертвовать!

Многие, к сожалению, делают однозначный выбор в пользу скорости загрузки и пишут код чуть ли не в одну строчку. Поначалу я тоже так делал, но со временем мой код стал более читабельным. В чисто html-страницах можно довольно быстро разобраться с кодом, т.к. легче понять, что куда, нет никаких переменных, циклов и т.д. Ц.можно пожертвовать читабельностью, писать на одной строчке тег table, tr и td... И кажется, что все понятно: вот таблица, вот строка, вот столбец. Однако задача сильно усложняется при сильно нагруженном коде и вложенных таблицах (причем неоднократно вложенных), да при этом еще в одной таблице такой CSS стиль, в соседней другой CSS стиль, а если при этом части страницы находятся в разных файлах (те, кто программирует на php, думаю, поймут, как и зачем располагать половину html кода страницы в одном файле, а половину в другом). И вот тут вы уже навряд ли быстро разберетесь даже в своем собственном коде. Поясню наличном примере.

На моем сайте был такой глюк: в Опере и IE все нормально, а в Мозилле почему-то страницы «прыгали». В частности, правый столбец вытягивался сильно в высоту, а центральный и левый из-за этого находились где-то в середине.

Я почти два дня искал ошибку! Так и не нашел! Это осложнялось как раз тем, что html-код был довольно большим и нагруженным. Потом я плюнул и решил сделать прежде всего-навсего код читабельным, т.к. в свое время много его изменял, добавлял вложенные таблицы, убирал одни, добавлял третьи, переносил из одного места в другое четвертые и т.п. А потом потратить минут 20-30, чтобы сделать код читабельным, добав-

лять лишние пробелы и перевод на новую строку, где это нужно - мне было неохота.

И вот я просто сделал код читабельным! Размер страниц при этом у меня увеличился аж почти на 21 килобайт. При том, что уже почти 75 она весила до этого.

И в результате всего за полчаса нашел ошибку! Просто в одном месте у меня высота была указана в процентах, а именно в этом месте нужно было в пикселях. Перепутал, думал, что этот tr принадлежит к одной таблице, а оказалось, к другой! Как видите, ошибка была элементарной и ее было тяжело найти только лишь из-за нечитабельного кода!

Да, я понимаю, что код постоянно изменяется, что-то дополняется, что-то убирается, но не ленитесь при этом делать код читабельным! Каждый раз, после каждой модификации.

Часть 2. РНР

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

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

что означает тот или иной фрагмент, что означает та или иная переменная.

Но вот вы написали скрипт. И все! А потом захотели его отредактировать. Например, ошибка в коде, которую вы раньше не заметили.

Вы открываете его и видите, например, такое:

if ($a==$b&&($c>=$d 11 $q!=$p)) {$s=w($a); echo 'Результат: '.x($s);>

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

Хорошо, а теперь взгляните на такой вот кусок кода:

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 j | $otvet_ vychislenia_vurashenia!=$error_vo_vrema_rassgeta )) //Проверка условия такого-то в зависимости от

того-то и при тех-то обстоятельствах.

{

$good_resultat_rabory = obrabotka_resyltata_ vyshiskenia($resultata_rabotu ); //Функция обработки результата, которая сначала делает то-то, а потом вот это и еще это.

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

для лучшего понимания результата человеком.*/

}

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

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

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