Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Простой вопрос по Object Pascal.


Страницы:   1 2

Kostafey ©   (2006-11-24 22:26:00) 

Подскажите пожалуйста как можно разделить реализацию класса на несколко модулей (файлов).
Или же просто есть ли Delphi команда аналогичная #include'Somefile' в С++


Anatoly Podgoretsky   (2006-11-25 00:13:00) [1]

> Kostafey  (24.11.2006 23:59:25)  [25]

Научишься.


Kostafey   (2006-11-24 23:59:00) [2]

> Anatoly Podgoretsky ©   (24.11.06 23:53)

Ладно. Я все понял. Спасибо что уделили мне время.
Возможно, когда-нибудья научусь писать толковый код.


Anatoly Podgoretsky   (2006-11-24 23:53:00) [3]

> Kostafey  (24.11.2006 23:39:20)  [20]

Это в отдельную функцию или процедуру.


Anatoly Podgoretsky   (2006-11-24 23:48:00) [4]

> Kostafey  (24.11.2006 23:04:10)  [10]

Нет, надо просто разбить на процедуры и им дать значимые имена.


Anatoly Podgoretsky   (2006-11-24 23:47:00) [5]

> Kostafey  (24.11.2006 23:03:09)  [9]

Все что можно вынести в отдельный файл, можно поместить в процедуру.


Kostafey   (2006-11-24 23:41:00) [6]


> [19] Anatoly Podgoretsky ©   (24.11.06 23:39)
> > Kostafey  (24.11.2006 23:01:06)  [6]
>
> Если не обращать внимания на ошибки, то помести 'SQL_a1.pas'
> в отдельную процедуру.


Во ! Это-то и оно! А саму процедуру в отдельный файл ?


Kostafey   (2006-11-24 23:39:00) [7]


> Прям так распух? 100 000 строк уже есть?

Нет, но 400-600 строк и все нужно по-моему в другой файл перебрасывать

> Значит они все неправильные. Зачем делать одно и тоже(или
> почти одно и тоже) несколько раз? Опять же рефакторинг нужен.
> Устраните дубликаты. Пример дубликатов в студию..


А в дубликатах есть просто изменения в SQL-запросах:

           DataModule_ABR.ADODataSet2.CommandText:=
'Select count(PCH_COD)+ '+
         '(select count(PCH_COD) '+
           'from ZVK1ARX o '+
           'where (o.DATE_ZVK between :DateFrom and :DateTo)) as Kol '+
'from ZVK1 '+
'where (DATE_ZVK1 between :DateFrom1 and :DateTo1) ';

           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateFrom').Value:=Per_beg;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateTo').Value:=Per_end;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateFrom1').Value:=Per_beg;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateTo1').Value:=Per_end;
           DataModule_ABR.ADODataSet2.Active:=true;
           DataModule_ABR.ADODataSet2.First;
           //Iauaa ?enei ii?a?ia ca ?an?aoiue ia?eia
           tmpCount1:=DataModule_ABR.ADODataSet2.FieldValues['Kol'];
           DataModule_ABR.ADODataSet2.Active:=false;
           DataModule_ABR.ADODataSet2.CommandText:=
'Select count(PCH_COD)+ '+
         '(select count(PCH_COD) '+
           'from ZVK1ARX o '+
           'where (o.DATE_ZVK between :DateFrom and :DateTo)) as Kol '+
'from ZVK1 '+
'where (DATE_ZVK1 between :DateFrom1 and :DateTo1) ';

           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateFrom').Value:=Srv_beg;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateTo').Value:=Srv_end;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateFrom1').Value:=Srv_beg;
           DataModule_ABR.ADODataSet2.Parameters.ParamByName('DateTo1').Value:=Srv_end;
           DataModule_ABR.ADODataSet2.Active:=true;
           DataModule_ABR.ADODataSet2.First;
           //Iauaa ?enei ii?a?ia ca n?aaieaaaiue ia?e?ia
           tmpCount2:=DataModule_ABR.ADODataSet2.FieldValues['Kol'];

           Delta:=tmpCount1-tmpCount2;


Anatoly Podgoretsky   (2006-11-24 23:39:00) [8]

> Kostafey  (24.11.2006 23:01:06)  [6]

Если не обращать внимания на ошибки, то помести 'SQL_a1.pas' в отдельную процедуру.


Kolan   (2006-11-24 23:31:00) [9]

> не самое лучшее решение

Отвратительное.


> Но тогда получиться куча однотипных методов в классе.

Значит они все неправильные. Зачем делать одно и тоже(или почти одно и тоже) несколько раз? Опять же рефакторинг нужен. Устраните дубликаты. Пример дубликатов в студию..


> Разрастание класса и подтолкнуло.

Прям так распух? 100 000 строк уже есть?


Kostafey   (2006-11-24 23:22:00) [10]

> Имеет: Рефакторинг "Извлечение метода"

Понял. Но тогда получиться куча однотипных методов в классе.


> Пока я так и не понял в чем проблемма? Что тебя подталкнуло
> разделять класс! на модули...

Разрастание класса и подтолкнуло. Хотя бы разместить реализацию класса в нескольких файлах.
Хотя судя по комментариям участников это не самое лучшее решение ?


Kolan   (2006-11-24 23:18:00) [11]

> Уверен, эта фраза имеет перевод на человеческий язык.

Имеет: Рефакторинг "Извлечение метода"


> Ну да, я конечно всех возможностей IDE незнаю

Пока я так и не понял в чем проблемма? Что тебя подталкнуло разделять класс! на модули...


Kostafey   (2006-11-24 23:09:00) [12]

> Кстати Ctrl+Click вполне пригоден.

Ну да, я конечно всех возможностей IDE незнаю


Kostafey   (2006-11-24 23:08:00) [13]

>Выделай отдельные(рефакторинг Extract Method)

Уверен, эта фраза имеет перевод на человеческий язык.


Kolan   (2006-11-24 23:07:00) [14]

> если одна ?

Кстати Ctrl+Click вполне пригоден.


Kolan   (2006-11-24 23:05:00) [15]

> 171

Мистическое число :)


Kolan   (2006-11-24 23:05:00) [16]

> [9] Kostafey ©   (24.11.06 23:03)
> > А что тут трудного?
> > Ctrl + Click на имени перенесет тебя к объявлению.
> > В левом верхнем углу среды есть дерево функций/классов
> тоже
> > можно переходить быстро.
>
>
> Угу. Если это разные подпрограммы, а если одна ?


А что у тя подпрограмма(это же функция/процедура так называется) не вмещается в 1-2 экрана? Тады она написаны хреново. Выделай отдельные(рефакторинг Extract Method)


Kostafey   (2006-11-24 23:04:00) [17]

Как я понимаю резюме следующее:

ОСТАВИТЬ ВСЕ КАК ЕСТЬ ??


Kostafey   (2006-11-24 23:03:00) [18]

> А что тут трудного?
> Ctrl + Click на имени перенесет тебя к объявлению.
> В левом верхнем углу среды есть дерево функций/классов тоже
> можно переходить быстро.


Угу. Если это разные подпрограммы, а если одна ?


Kolan   (2006-11-24 23:02:00) [19]

> строчка уже отлажены

И что работают во всех 100% случаев. Поверь получится так, что и там нужно будет что-то менять..


Kolan   (2006-11-24 23:01:00) [20]

> Только это извращение

Фасад это, а не извращение.

> Да чтоб файл не листать.

А что тут трудного?
Ctrl + Click на имени перенесет тебя к объявлению.
В левом верхнем углу среды есть дерево функций/классов тоже можно переходить быстро.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо