Предел прочности
Вообще, если штаны через голову надевать, то порвутся, а нормальным образом - ещё год послужат.:D
Настолько, насколько таланта программистского хватит.
Вообще, если штаны через голову надевать, то порвутся, а нормальным образом - ещё год послужат.:D
И насколько большие штаны удалось натянуть тебе? :-)
И насколько большие штаны удалось натянуть тебе? :-)
Ну вот у меня 138 dll каждая в среднем по 350к рыба проекта(Хост) еще 661к, формы я уже не считаю. Все это работает с БД MSSQLServer 2000. 80 клиентов с разделением прав и полномочий. в базе около 200 таблиц, 1500 ХП. Все работает без проблем. Правда одно но - проектировал и разрабатывал все в одиночку.
Ну вот у меня 138 dll каждая в среднем по 350к рыба проекта(Хост) еще 661к, формы я уже не считаю. Все это работает с БД MSSQLServer 2000. 80 клиентов с разделением прав и полномочий. в базе около 200 таблиц, 1500 ХП. Все работает без проблем. Правда одно но - проектировал и разрабатывал все в одиночку.
Ничего так, впечатляет.
А вопросы "кульности" напоминают мне сценку из какого-то фильма (кажется, "Супершион"):
"Ну хорошо, ты победил в конкурсе писунов, зато я - в конкурсе стрелков." Ха-ха.
Брат наш во Билде, moonmike, молодчина. Таки сдаётся мне, что он тщательно отделял мух от котлет, иначе, интерфейс от содержательного кода.
Ну собсно так и есть. Потом есть еще несколько моментов:
1)Разбиение программы на модули и вынесение каждого модуля в dll. По сути получается что у меня не одна программа, а целый комплекс. Каждая dll реализует свою узкую функциональность, для примера заведение нового контрагента - одна dll. Платежи от контрагента - другая dll и так далее. Потому наверное система достаточно стабильна. Единственное что связывает каждую dll с хостом это то, что у них один коннект к БД(передается в dll при инициализации).
2)Код работы с данными вынесен в DataModule, то есть я не пишу в коде юнита следующего:
int i = 24;
DataModule->ADOSP->Parameters->ParamByName("@MP")->Value = i;
DataModule->ADOSP->Prepared = true;
DataModule->ADOSP->ExecProc();
а пишу:
int i = 24;
DataModule->ExecADOSP(i);
а уже в Датамодуле выполняю все что нужно
3)Те же параметры передаю через промежуточные переменные, к примеру вместо:
ADOSP->Parameters->ParamByName("@MP")->Value = ADOQue->FieldByName("MyF")->AsInteger;
я пишу следующее:
int MyF = ADOQue->FieldByName("MyF")->AsInteger;
ADOSP->Parameters->ParamByName("@MP")->Value = MyF;
Замечено эмпирически что избавляет от многих гуляющих глюков.Ну и прочее.
Хотя видел я серьезные программы, к примеру Kompas SQL(просто сам к нему руку приложил немного), реализованные в виде StandAlone экзешника и работающие отлично, причем по функциональности сравнимые и даже превосходящие ту же 1C.