Jul. 9th, 2021

balu: (Default)
В минулому пості й коментарях, мова йшла про популярну колись систему розробки — Delphi. Там я сконцентрувався на тому, що Delphi не вміла. А в цьому трохи скажу про те, як невдала модель розробки самої Delphi занапастила те, що в ній було.
Розробники Delphi вбивчою особливістю позиціонували модель програмування, коли компоненти, як правило віджети, з панелі компонент перетаскувалися на форму. Програміст двічі клацав на тому віджеті, наприклад кнопці, а Delphi генерувала заготовку кода, так званий обробник, який залишалося змінити під свої потреби. Такий спосіб розробки породив кілька поганих практик розробки — антипатернів.

1. Button1Click — стиль. Така назва пішла від описаного вище методу розробки. На картинці типовий приклад.


Що з тут не так? Найбільший гріх тут, це те, що змішали зчитування значень віджетів та бізнес-логіку. Це призводить до того, що цей код не можна використати повторно і важко супроводжувати. Цей приклад коротенький, а я бачив обробники на 2–3 екрани.
По-друге, це жахливе форматування. Редактор Delphi не дуже слідкував за цим, тому як програміст надрукує, так і буде. Звісно, можна так не писати, але мало хто робив правильно, коли саме середовище провокувало писати таке лайно.

Таке форматування дещо краще
Таке форматування дещо краще

Варто сказати, що розробники Delphi усвідомили проблему, і спробували якось виправити ситуацію за допомогою ActionList та ActionManager, але це не прижилось.

2. Власне, об’єкти. Delphi з самого початку комплектувалася об’єктною мовою. Проблема полягала в тому, що програміст перетаскував на форму візуальні і невізуальні компоненти. Звідси з’явилася асоціація компонентів та об’єктів. Безумовно, всякий компонент — об’єкт, але не всякий об’єкт — компонент. Людина бачить панель компонентів і помилково звикає, що то всі її об’єкти. Вона знає, що можна написати свій об’єкт, але, щоб використати його це з потрібно робити якісь маніпуляції з панеллю компонентів. Особливо це стосується візуальних компонент, бо вже привчені використовувати віджети з панелі компонент і складно будувати інтерфейс в рантаймі. В результаті або шукають сторонній компонент, або пишуть лапшу в обробниках.
У згаданій в минулому пості книжці об’єктний підхід і давався саме в контексті побудови компонент. А вся інша література привчала до процедурного коду, хоча і з використанням об’єктів.

3. Інфраструктура. Попередній пункт породив іншу цікаву проблему. Люди погано знали якусь інфраструктуру. Наприклад, мучились з масивами або базою даних там, де можна було використати списки. На пропозицію скористатись списком не відразу розуміли, що мова йде не про віджет, а про структуру даних :) і т.і.

Одним словом, зовсім не дивно, що з Delphi з’їхали, в більшості своїй, на C#.

Profile

balu: (Default)
от. Михайло

December 2025

S M T W T F S
 123 456
7 8910111213
14151617181920
21222324252627
28293031   

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 31st, 2026 07:32 pm
Powered by Dreamwidth Studios