Title: Обновления, невидимые глазу
Author: Viva Calman
Date: 2022-05-31 15:19:54
Correction code: 165400162963369

Где-то за две недели неспешного кодинга сумел превратить кошмарный и запутанный скрипт, служащий мне CMS-кой во вполне изящную программу, которая не вызывает отторжения при взгляде на нее. Я не буду углубляться в технические подробности, но изначально у меня был один здоровенный файл, в котором в одной процедуре выполнялось все. Ну, знаете, такой типичный образец кода, который появляется вместе с мыслью "попозже приведу в порядок, а сейчас главное, чтобы работало".

Безусловно, оно работало, но структурно выглядело настолько убого, что я очень долгое время предпочитал игнорировать имеющуюся проблему и просто запускал скрипт по мере необходимости. Не вижу зла. Однако, как я уже говорил, мне это в итоге надоело. Тем более мне захотелось немножко расширить функционал сайта в целом и блога в частности, а это означало какой-никакой, но рефакторинг.

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

Из кода были выкинуты почти все голые константы и заменены на именованные. Более того, те параметры, которые могло потребоваться изменять в целях настройки, были вынесены из кода в конфиг-файл (он общий для всего сайта, для блога в нем сделана отдельная секция). Генерация HTML-кода по возможности была причесана так, чтобы месиво из разметки присутствовало в функциях по минимуму.

Немного было изменено форматирование. В течение очень долгого времени я предпочитал оформлять блоки кода вот так:

if (true)
{

}

Мне казалось, что фигурная скобка на новой строке лучше выделяет блок. Однако, в какой-то момент у меня в голове щелкнуло, и я понял, что вариант

if (true) {

}

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

После косметических доработок настало время улучшений, благо теперь модификация кода сильно упростилась. И основным улучшением стало добавление кеширования. Раньше скрипт работал не то чтобы медленно, но при обработке записей упирался в скорость чтения диска (я как-нибудь в другой раз покажу то, на чем сейчас крутится мой сайт. Посмеемся вместе). Теперь же скрипт считывает только произведенные изменения и скорость его работы выросла, без преувеличений, в разы.

Вместе с кешированием реализовал пару внутренних доработок, избавившись от лишних прослоек и упростив логику.

Сразу скажу — я не буду выкладывать скрипт в публичный доступ. Не потому что секьюрити бай обскьюрити, мне совсем не жалко даже, а просто потому что он вряд ли кому-то понадобится. Люди, достаточно поехавшие крышей для того, чтобы держать свой сайт исключительно в виде статических страниц или пользуются готовыми инструментами, типа Hugo, или имеют достаточно скиллов, чтобы реализовать подобные служебные скрипты своими руками, на любимом ими языке.

А эта заметка написана просто потому, что я радуюсь успешному результату. Иногда для радости нужно совсем немного.

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

Метки:
^HOME