Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Опять про веб. На сей раз заметка про ООП

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

Но вот буквально минут двадцать назад я подумал (это вместо того, чтоб готовиться к защите, ах, как же это я мог), что, в принципе, объект в вебе нужен. Во-первых, это помогает разгруппировать функции по кучкам согласно их предназначения. То есть просто функция connect() - хз, куда коннектится, а вот $db->connect() уже более понятна и вполне отличима от $smtp->connect(), $sock->connect() и прочего, причем вполне может описываться одинаковыми кусками кода, наследуемыми от родительского объекта.
Во-вторых, это спасает от нечаянного совпадения имен функций. Вот у меня есть дохера разных файлов с функциями, которые инклудятся, из каждого беру по одной-две функции, чтоб отобразить страницу. И для того, чтоб они не перепутывались меж собой по именам, вырастает целая идеология префиксов. photo_db_updatetags() или все-таки db_photo_updatetags()? Надо ее поискать и посмотреть, как правильно. А где искать - в файле photo_db.php или photo/db.php? Ну, само собой, я-то помню, что где писал и как. Но мысли, блуждающие в голове другого программиста, который функции категоризирует по-другому, могут быть не совсем ясны. Короче, чтоб избежать путаницы с именами функций, свалим все в класс photo, который эти все штуки умеет. $photo->updatetags() - хоп! и никаких проблем. И сразу ясно, где искать: classes/photo.php. Насчет выгодны в быстродействии или прочих требуемых ресурсах я не знаю, вполне вероятно, что ООП жрет больше.

А, и еще я придумал, как идеологически корректно избежать избыточности в таблице дерева страниц в Бало, не уменьшая, а даже увеличивая скорость работы движка - надо сделать кэш-таблицу собственноручно! Правда, Мисата сказал, что "мы" уже сделали в Бало2 по-другому. Пожалуйста, пусть эти "мы" делают по-другому, я сделаю свой очередной движок с кэш-таблицей, блэкджеком и прочими атрибутами.

Ну а пока, ах, пойду поучу уроки.
Tags: web
Subscribe

  • Коуты над Десной, часть 1

    Первого августа, перекрыв дома воду и выключив интренет, мы приехали в городочек Коуты над Десной. Это конечная станция железной дороги вообще,…

  • Плёнка №202

    Плёнка: Fomapan profi line action 400 Фотоаппарат и объектив: Zenit-E + Helios 44-3 2/58 Проявитель: Fomadon LQN Сканер: FilmScan35 II 1 2 3…

  • Плёнка №199

    Всякая нудная техническая информация - что это за плёнка, чего фотографии такие контрастные, и так далее - расположена после снимка номер шесть. 1…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 18 comments

  • Коуты над Десной, часть 1

    Первого августа, перекрыв дома воду и выключив интренет, мы приехали в городочек Коуты над Десной. Это конечная станция железной дороги вообще,…

  • Плёнка №202

    Плёнка: Fomapan profi line action 400 Фотоаппарат и объектив: Zenit-E + Helios 44-3 2/58 Проявитель: Fomadon LQN Сканер: FilmScan35 II 1 2 3…

  • Плёнка №199

    Всякая нудная техническая информация - что это за плёнка, чего фотографии такие контрастные, и так далее - расположена после снимка номер шесть. 1…