Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Покритикуйте и научите :)   Найти похожие ветки 

 
Бася   (2007-08-21 17:41) [0]

Не очень большой опыт программирования в Делфи (в основном, так-с потихоньку). Написал первую более-менее программу... Проектирование конечно никакое :) Поэтому хочется услышать как люди делают :)
Расскажу, как у меня... Поехали...

Есть4 формы прототипа: fProtoSpr (форма справочника), fProtoMod (форма модального справочника для выбора значения, наследован от fProtoSpr), fProtoRep (форма отчета), fProtoDialog (форма диалогового окна).

Необходимо создать справочник? Создаем наследника от fProtoSpr и, если необходимо, дописываем функции...
Документ или диалоговое окно? Создаем от fProtoDialog и то же самое.
Так же поступаем в случае с отчетами etc.

Что напрягает? То, что окна справочников (да и не только) общаются с главными окнами и друг другом. Будет проблема, когда захочется эти формы перенести в другой проект. Очень хочется этого избежать. Каким образом это делать?

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

При изменении структуры базы (например, добавилось поле) необходимо переписывать клиента (и соответственно его обновлять). Возможно от этого избавиться?

Ну вот навскидку...

Приведите, пожалуйста, свои легкие примеры по проектированию систем? Так сказать, для новичка...


 
oldman ©   (2007-08-21 17:43) [1]


> При изменении структуры базы (например, добавилось поле)
> необходимо переписывать клиента (и соответственно его обновлять).
>  Возможно от этого избавиться?


невозможно!!!


 
oldman ©   (2007-08-21 18:00) [2]


> Бася   (21.08.07 17:41)  
> Не очень большой опыт программирования в Делфи


Дельфи тут сбоку.
Изучай теорию алгоритмов и построения программ в общем.


 
Юрий Зотов ©   (2007-08-21 18:01) [3]

> окна справочников (да и не только) общаются с главными окнами и друг
> другом.

Если общаются ПРОТОТИПЫ (то есть, механизм общения заложен уже в ПРОТОТИПАХ, а не в конечных формах - наследниках), то это нормально. А конечные формы только реализуют тот конкретный прикладной функционал, который заложить в прототипы невозможно - но не лезут в механизм взаимодействия форм.

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

Переносим все 4 прототипа - и проблем не будет.

> Проверки на корректность ввода делаю при нажатии на кнопку ОК в
> форме диалога. Знаю, что нужно делать это в самой базе

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


 
tesseract ©   (2007-08-21 18:02) [4]


> Изучай теорию алгоритмов и построения программ в общем.


строение exe :-).


> Как такое сделать, если проверка будет в базе?


Транзакции?

> При изменении структуры базы (например, добавилось поле)
> необходимо переписывать клиента (и соответственно его обновлять).
>  Возможно от этого избавиться?


Возможно, если изменилась только база. Только вот как с контролами/функциями разбираться будешь ?


 
oldman ©   (2007-08-21 18:05) [5]


> tesseract ©   (21.08.07 18:02) [4]
> Возможно, если изменилась только база.


А поле там для красоты добавилось?
Или его все-таки учитывать в расчетах надо?


 
Черный Шаман   (2007-08-21 22:25) [6]


> Бася   (21.08.07 17:41)


Можно, если в программу встроить скриптер.


 
MsGuns ©   (2007-08-21 22:34) [7]

>oldman ©   (21.08.07 17:43) [1]
>> При изменении структуры базы (например, добавилось поле)
>> необходимо переписывать клиента (и соответственно его обновлять).
>>  Возможно от этого избавиться?
>невозможно!!!

Про бизнес-логику слышал ? Или про объектные БД ?\

Иногда лучше покурить. Или пожевать. ;)


 
tesseract ©   (2007-08-21 22:50) [8]


> А поле там для красоты добавилось?Или его все-таки учитывать
> в расчетах надо?


SQl почиг твоё поле хранимки рулят - работало, делал. В оганиченном объёме, но делал. Кто-то умудрялся из базы Dfm  загружать.


 
Суслик ©   (2007-08-22 00:13) [9]

Для проекта в 4 формы нет никакой разницы, как ты его сделаешь.
И не ИМХО.


 
Kostafey ©   (2007-08-22 00:25) [10]

> При изменении структуры базы (например, добавилось поле)
> необходимо переписывать клиента (и соответственно его обновлять)
> . Возможно от этого избавиться?

Сразу предупрежу, что ничего не понимаю ни в программировании,
ни, тем паче, в проекторовании. Однако вставлю свои 5 копеек.

БД должна быть четко спроектирована дабы потом не пришлось переделывать.
Кто-то из великих сказал, что 10 минут протраченных на проектирование
эткономят 10 часов разработки.

Мне сложно представить любого рода приложение, которое при изменении
структуры данных не пришлось соответствующим образом корректировать.


> Приведите, пожалуйста, свои легкие примеры по проектированию
> систем? Так сказать, для новичка...

Я бы в первую очередь уделил внимание изучению грамотного построения структуры БД,
нормализации и т.д.


 
Бася   (2007-08-22 02:36) [11]


> > окна справочников (да и не только) общаются с главными
> окнами и друг
> > другом.
>
> Если общаются ПРОТОТИПЫ (то есть, механизм общения заложен
> уже в ПРОТОТИПАХ, а не в конечных формах - наследниках),
>  то это нормально. А конечные формы только реализуют тот
> конкретный прикладной функционал, который заложить в прототипы
> невозможно - но не лезут в механизм взаимодействия форм.
>
> > Будет проблема, когда захочется эти формы перенести в
> другой проект.
>
> Переносим все 4 прототипа - и проблем не будет.

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


> Для проекта в 4 формы нет никакой разницы, как ты его сделаешь.
>
> И не ИМХО.

Где вы прочли про 4 формы?


> > Проверки на корректность ввода делаю при нажатии на кнопку
> ОК в
> > форме диалога. Знаю, что нужно делать это в самой базе
>
> Это нужно делать и в базе, и в клиенте. В базе - чтобы не
> нарушить целостность данных, если в базу влезут другим клиентом.
>  В клиенте - чтобы выдать юзеру конкретное сообщение на
> русском языке и, если надо, сделать другие действия (например,
>  перевести фокус на контрол с ошибочным значением).


Спасибо, здесь все ясно


 
Юрий Зотов ©   (2007-08-22 02:47) [12]

> Бася   (22.08.07 02:36) [11]

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


 
tesseract ©   (2007-08-22 10:02) [13]


> Но иногда необходимо обращаться к главной форме...


переменную "ГлавнаяФорма" уже тяжело задать?


 
oldman ©   (2007-08-22 11:00) [14]


> MsGuns ©   (21.08.07 22:34) [7]
> >oldman ©   (21.08.07 17:43) [1]
> Иногда лучше покурить. Или пожевать. ;)


Я то слышал, но вот автор с его малым опытом и первой более-менее программой...
Да еще он и в проектировании (по его же словам) никакой.



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

Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.046 c
15-1187553791
wp2
2007-08-20 00:03
2007.09.16
Как загрузить Rich-тест в компонент TRichEdit на этапе проэктир..


15-1187331871
Gydvin
2007-08-17 10:24
2007.09.16
Flatron F920B туфтовый монитор?


2-1187848771
fd979
2007-08-23 09:59
2007.09.16
Проблема с цветами в ХР


15-1187302091
Install
2007-08-17 02:08
2007.09.16
Что можно почитать о цветовой схеме YCbCr на русском?


15-1186923739
textExpanser
2007-08-12 17:02
2007.09.16
Сверхбыстрое хэширование (hashing)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский