Вниз
Скачать: CL | DM;

Пример работы с базой (хочу идеальный код)   Найти похожие ветки 

← →
Dust ©   (2006-06-03 13:41) [0]

Имеет ли смысл всю работу с базой переносить в дата-модуль?
стоит ли описывать класс типа TMyDatabase, и тд и тп...?


← →
DSKalugin ©   (2006-06-03 15:26) [1]

1-да, это логичней, чем размазывать его по всем модулям. Под кнопками и другими элементами управления должны быть только процедуры управления ходом выполнения программы и вызовы готовых процедур обращения к БД, опи санных в датамодуле.

2-он уже описан в компонентах прямого доступа IBObjects, FibPlus, IBX, dbExpress. Так что достаточно воспользоваться готовым, например
MyDatabase: TpFIBDatabase;


← →
atruhin ©   (2006-06-03 16:26) [2]


> 1-да, это логичней, чем размазывать его по всем модулям.

Известный вариант, но есть недостатки, в достаточно большом проекте этот модуль может получится огромных размеров, плюс все модули должны иметь на него ссылки, затрудняется работа в комманде.
Есть другой вариант, главное окно предоставляет интерфейс через который можно получить коннект к БД, транзакциям и т.д., а также управляет созданием закрытием окон. Например по имени класса окна:
 FormClass := GetClass(ClassName);
 if Assigned(FormClass) then begin
   WinClass := TfrmAbstractChild(FormClass.NewInstance);
   (WinClass as ICreateObject).Init(ObjID, self ....);
   WinClass.Create(self);
Окно получает ссылку на документ, с которым должно работать и ссылку на интерфейс. Вся работа с БД НЕОБХОДИМАЯ ЭТОМУ ОКНУ осуществляется в нем. В целом окно ни чего не знает о других окнах, включая главное, а оно не знает о дочерних. В таком варианте отдельные окна могут разрабатывать разные люди, также очень легко олаживать модифицировать т.к. мы имеем небольшие абсолютно независимые модули.


← →
Курдль ©   (2006-06-05 11:44) [3]


> хочу идеальный код


Идеальный - не получится. Если хотите оптимальный - надо много читать.
Рекомендую почитать про GRASP и GoF. (Ларман, Гамма и т.п.) Как раз там объясняют, как правильно "делить" программы на модули.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
15-1152657756
SPeller
2006-07-12 02:42
2006.08.13
Снова борьба с альтернативными ICQ клиентами?


1-1151778976
leonidus
2006-07-01 22:36
2006.08.13
Глюки при использовании строк Widestring в операторе IF


8-1139987525
Fly
2006-02-15 10:12
2006.08.13
Как Сохранить в PNG


15-1152807930
Nic
2006-07-13 20:25
2006.08.13
Меня можно поздравить


8-1137324860
Дмитрий Белькевич
2006-01-15 14:34
2006.08.13
Деинтерлейс




   Наверх