:: Курилка
TO JS Продолжаем разговор ?
JellFish
Автор
Цитата:
Я думаю, что это вообще большая тема для обсуждения, но только не в
основном форуме,
а во флейм- форуме, так как визуальные средства значительно ускоряют
процесс разработки
и отладки, особенно комплексных приложений.

Наверное мы друг друга не поняли. Я имел ввиду делать следующее. Привожу пример программы.

* _______________________________________Ïåòðîâ À.Î.__
* | Îðãàíèçàöèÿ ïðîèçâîäñòâà |
* | Ðàáîòà ñ îáîðóäîâàíèåì ñêëàäà |
* | Ïðîãðàììà Engine.prg |
* |____________________________________________________|
* | Äàòà èçìåíåíèÿ: 19.11.03, íàïèñàíà 19.11.03 |
* |____________________________________________________|
* ________________________ÈÍÈÖÈÀËÈÇÀÖÈß_______________________
PARAMETERS id_engine
IF PARAMETERS()<1
m.id_engine=5
ENDIF
RESTORE FROM syspar ADDITIVE
SET PROCEDURE TO dproc
SET CLASSLIB TO my_mult_classes ADDITIVE
PRIVATE f_new,id_engine,name,b_schet,id_type,tech,create_year,in_year,number,i_number,r_number,drag_met,creator,set_place,imp_face,id_otdel,comment,count,mark
STORE .f. to f_new
STORE 0 TO id_engine,id_type,create_year,in_year,id_otdel,count
STORE '' TO name,b_schet,tech,umber,i_number,r_number,drag_met,creator,set_place,imp_face,comment,mark
DO FORM engine.scx NAME w_engine LINKED
IF USED('q_engine')
SELECT q_engine
USE
ENDIF
* _______________________________________________________
* | &Egrave;&iacute;&egrave;&ouml;&egrave;&agrave;&euml;&egrave;&ccedil;&agrave;&ouml;&egrave;&yuml; &iuml;&eth;&egrave;&euml;&icirc;&aelig;&aring;&iacute;&egrave;&yuml; |
* |_______________________________________________________|
* | &Auml;&agrave;&ograve;&agrave; &egrave;&ccedil;&igrave;&aring;&iacute;&aring;&iacute;&egrave;&yuml;: 19.11.03, &iacute;&agrave;&iuml;&egrave;&ntilde;&agrave;&iacute;&agrave; 19.11.03 |
* |_______________________________________________________|
FUNCTION sh_w_engine
SELECT * ;
FROM type;
UNION (select 0 as id_type, ' &Acirc;&ntilde;&aring;' as name from type);
ORDER BY 2;
INTO CURSOR q_type
retu .t.

Здесь в начале приложения я запускаю форму
DO FORM engine.scx NAME w_engine LINKED

А далее во всех методах пишу только вызов функции. А не ее саму. А ее текст пишу в PRG.

Вот и весь принцип. Который считаю самым правильным. Так как меня так учили еще с 2.6
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
Э-э... Как бы, такой стиль хорош в процедурном программировании. Понятно, почему тебя так учили - FP2x и есть процедурный язык.

Но Visual FoxPro какой-никакой, но Объектно-Ориентированный язык. Здесь просто оперируют другими понятиями. По другому "мозги повернуты".

Если возникает некий кусок общего кода (т.е. некий код, который без изменения кочует из метода в метод), то обычно делается не процедура, а метод класса (пусть на базе Custom). Причем класс - это уже конечная стадия. Сначала этот кусок проходит стадию метода в текущей форме.

Хотя результат получается аналогичный: выделение общего куска кода в отдельную процедуру (только эта процедура назвается методом или событием)
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
Jellfish
Но я не говорил что я не использую VCX. Я только показал что код методов форм я храню в отдельном PRG, что и представил.
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
Когда я только переходил на VFP из FPD у меня стояла та же проблема: что использовать - набор PRG или VCX ?

В конце концов я выбрал именно VCX по следующим соображениям:

1) Классы легче управляемы.

Например, я стараюсь "убирать за собой" в том смысле, что если объект уже не нужен его надо удалить. С классом это проделать элементарно. А вот выгрузить процедурный файл - это проблема

2) У меня есть набор процедур по работе с древовидными структурами. В базе данных есть много таблиц древовидной структуры. Значит одним из параметров в этих процедурах необходимо указать имя таблицы с которой необходимо работать.

Однако если оформить эти процедуры как методы одого класса, то в этот класс можно ввести проперти, в которые и записывать имя таблиц. Уменьшается количество параметров и необходимых проверок
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
Vladimir Knyr
Прошу прощения за бесцеремонное вмешательство.
ПРЕДУПРЕЖДАЮ !ни кого и не в чем не осуждаю
просто тоже мыслями поделюсь.

Всем известна поговорка "Все свое ношу с собой"
И может быть не всем "Программа должна обслуживать сама себя"

Так вот, когда были лишь процедуры, то чтобы легче было переносить код
придумали модули и библиотеки с набором процедур и функция, касающихся
решения определенного класса задач.

ООП - это уже новая, более универсальная форма, выше упомянутой стратегии.
с более мощными и удобными средствами разработки и управления.

Поэтому делать как умешь это хорошо, тем более когда уже хороший багаж
наработок имеется, но все же ООП, гораздо красивее и элегантнее,
простого процедурного программирования, хотя его совсем уж забывать ну ни как не стоит
Это как ДАНИСИМО от ДАНОН "Попробовав раз, ем и сейчас !"
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
jellfish
что использовать - набор PRG или VCX ?

А никто и не говорил что VCX это хуже PRG. Я так же как и Вы использую VCX. Например у меня в классах содержатся наработки по
своему combobox.
своему вводу ФИО
своему вводу адреса
и еще очень много компонент но самым главным является то что я сразу переписал в классы все используемые объекты - и не мучаюсь с их настройками.

Но я наряду с VCX использую и PRG в котором у меня хранятся процедуры. Например:

Перевести курсор в таблице в нужную позицию
Перевести дату в строку (русскими словами)
Послать сообщение пользователю
И т.д.

Не предлагаете же Вы скинуть все это в визуальные классы? Или я Вас не понял.
Но мне кажется мы уходим от темы ...
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
jellfish
Цитата:
Это как ДАНИСИМО от ДАНОН "Попробовав раз, ем и сейчас !"

Но делаю то я так не потому что мне так хочется. А потому что так удобнее, на мой взгляд. Например я могу вызвать любую форму с параметром (как процедуру) и она мне вернет значение (как функция) при этом затратив минимум усилий. ;)
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
Vladimir Knyr
И это абсолютно правильное использование формы.
Ведь эта возможность и есть одно из преимушест VFP И ООП.
Просто при переходе с процедурного стиля на стиль ООП силу имеет привычка.
И совсем нельзя забывать про процедуры.
Просто если это задача цифру обозвать словом - то однозначно это функция,
а вот механизм: Assign_method & Access method и события делают объект живым.
Хотя, если говорить в общем, то все таки концепция ООП подразумевает
конечно же использование классов объектов, а не процедур.
Просто изначально FOX не был объектным языком.
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
D_Segrey

Сообщений: 127
Откуда: Киев
Дата регистрации: 23.11.2001
Когда-то в основной конференции было подобное обсуждение
после которого в каждом проекте подключаю две процедуры:
одна - общая для всех проектов (сумма в строку и т.п.)
другая - бизнес логика данного проекта (солянка из процедур и невизуальных классов)
а VCXы - само собой на своем месте
Ratings: 0 negative/0 positive
Re: TO JS Продолжаем разговор ?
JS

Сообщений: 12264
Откуда: Эстония
Дата регистрации: 04.09.2000
И никто не предупредил, а я не заглядывал.
Сегодня уже поздно - завтра продолжим...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 (Гостей: 25)

© 2000-2024 Fox Club 
Яндекс.Метрика