Delphi. Архитектура приложения. Видимость объектов

Увидел на DelphiMaster, решил сохранить себе

Вот несколько принципов, соблюдая которые навсегда избавишься от проблем “видимости”:

1. Объекты, переменные, методы ОБЩЕГО ПОЛЬЗОВАНИЯ всегда размещать в датамодуле, причем сам код датамодуля не должен “ведать” ни о каких переменных извне – все, что ему надо, должно передаваться в параметрах.
Ссылку на датамодуль располагать в инфтерфейсной части всех юнитов – “клиентов”, там, где перечисляются VCL-ные юниты. Датамодуль так же, как и гл.формы, должен быть включен в список автосоздаваемых.

2. Главная форма не должна обращаться ни к какому юниту, кроме датамодуля, ПО ИМЕНИ. Только по явной ссылке, используя разыменование типа. Уместно иногда вместо прямых вызовов внешних процедур использовать сообщения – при этом нет необходимости делать методы сторонних юнитов видимыми (uses в implementation) – такая технология удобна, например, при реализации общего функционала в MDI – приложениях.

3. “Дочерние” формы могут обращаться к переменным и методам Главной формы так же, как к датамодулю, для чего имя инита гл.формы также располагается в интерфейсной части uses. Все “дочерние” формы должны быть исключены из списка автосоздаваемых.

4. Не следует хранить данные, относящиеся к какому-то объекту (например, доч.форме), вне этого объекта. В сторонние методы, обрарабывающие объект, адрес на него передавать параметром.

5. Объекты уничтожает тот, что его создает.

6. Объект никогда не уничтожается в процедуре (функции), которой он передается как параметр (точнее, ссылка на него)

7. Объект, созданный в процедуре, не должен никуда передаваться, а используется лишь как временный участок памяти, очвобождаемый по выходу из процедуры.

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

This entry was posted in Delphi. Bookmark the permalink.