![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простой вопрос по Object Pascal.
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 на имени перенесет тебя к объявлению.
В левом верхнем углу среды есть дерево функций/классов тоже можно переходить быстро.