|
|
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
asviridenkovYuRockпропущено... Лично у меня это - "класс в приложении" с прекрытыми виртуальными методами. В таком случае может сработать универсальный класс, в котором детали обмена с конкретной моделью задаются в виде конфигурации, скажем в XML. Ну, или, если разница слишком велика, в виде скриптов. Опять универсальный решатель всего и вся ? C XML и блютусом ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 10:36 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Используйте плагины и интерфейсы и проблемы расширяемости практически решены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 10:59 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
ДокDimaBrСледующий этап - формы в базу. Не-а, формы - в dll, а лишь потом - в базу ;) Не, сначала в OLE-объект Товарищи, вроде серьезный вопрос поднят, не каждый поймет искрометное чувство юмора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 11:01 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
roschinspbДокпропущено... Не-а, формы - в dll, а лишь потом - в базу ;) Не, сначала в OLE-объект Товарищи, вроде серьезный вопрос поднят, не каждый поймет искрометное чувство юмора И это слабенько... Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е... Хорошо придушили вовремя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 11:21 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
ziv-2014Используйте плагины и интерфейсы и проблемы расширяемости практически решены. Да чё там практически - полностью. За исключением тех "редких" случаев, когда меняется интерфейс этих плагинов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:36 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
zinpubПыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е... Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать. softwarerВасилий 2Обоснуй Подход подразумевает невозможность открыть датасет в дизайн-тайме. Следовательно, многие возможности отладки и настройки в дизайн-тайме тоже недоступны, плодится куча тупейшего кода, для отлова тривиальных ситуаций типа "поле на десять пикселей уже, чем значение" или там "опечатка в названии поля" требуется запуск программы, а для проверки исправления - ещё один запуск. Итого медленная неэффективная разработка и тупой код в результате. Я тоже в юношестве таким баловался. Когда задолбался переключать DB.Connected, сохраняющийся в True после развлечений в дизайнере и пытающийся восстановиться при запуске программы у клиента, как-то остыл. К тому же не все запросы отображаются визуально, бывает и внутренняя кухня, которую надо генерить динамически. У меня в проекте штук двадцать разных внутренних запросов - что же, на каждый добавлять TQuery? А если необходимо юзать несколько разных db-логинов (к примеру, интерфейс у них различается), то дизайнер тоже в пролете. Опять же при изменении схемы БД я быстро найду старые запросы поиском по проекту, а тебе придется ворошить компоненты. В общем, все зависит от структуры и задач программы. roschinspbВасилий 2- Не хранить тексты запросов в свойствах компонентов - dfm файлы часто исключены из фильтра поиска, и в случае чего искать текст придется долго. Я в одном проекте (всё на ХП, запросов немного) выделил все тексты в секцию констант одного юнита, а в другом (клиентский софт для БД с кучей таблиц) задаю их константами внутри методов, но обязательно добавляю к имени суффикс SQL, чтобы облегчить поиск в случае чего. Т.е. не любите Вы визуальное программирование. Ну, это дело вкуса. Я так наоборот считаю, что надо максимально использовать db-aware компоненты и DataSet`ы на DataModu`лях. Открывать тут холивары на тему лениво, но вот что бесспорно так это то, что по возможности надо придерживаться одного подхода. Потому, что когда исправляешь что-то в dfm-ке, а потом где-то глубоко в коде пара символов исправляется на нечто иное, то это печаль, особенно в большихстарыхчужих проектах. Я к нему спокойно отношусь. Кидать контролы удобно, но вот копошиться с пикселами, выравниванием и прочим меня задалбывает. Насчет свойств компонентов как раз тоже из опыта. Неоднократно бывало, что по полчаса ищу некоторую опцию, которую нужно добавить в другой компонент или наоборот изъять. Особенно весело, когда это нечто монструозное типа грида или virtualtreeview. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 19:30 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Василий 2Я тоже в юношестве таким баловался. Когда задолбался переключать DB.Connected, сохраняющийся в True после развлечений в дизайнере и пытающийся восстановиться при запуске программы у клиента, как-то остыл. Угу. Это как раз иллюстрирует разницу в наших подходах. Ты идёшь наиболее очевидным путём: попробовал, увидел проблему, решил, что надо переключать. Переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал... задолбался и ушёл целиком в рантайм. Я же, попробовав и увидев проблему, чуть-чуть пораскинул мозгами и сделал так, чтобы дизайн-таймовый DB.Connected не мешал. Он у меня годами остаётся в true, просто не пытается восстанавливаться в ран-тайме, вот и все :) Василий 2К тому же не все запросы отображаются визуально, бывает и внутренняя кухня, которую надо генерить динамически. Бывает. И мой подход никак не мешает делать это там, где оно оправданно. Твой же подход означает, что динамика используется даже там, где она существенно хуже, этим и вызвана моя реплика. Василий 2У меня в проекте штук двадцать разных внутренних запросов - что же, на каждый добавлять TQuery? Знаешь, проект на двадцать запросов, в общем, может быть написан вообще как угодно, это совершенно неважно для всех, кроме разве что автора. Но сама по себе постановка вопроса катастрофически нелепа. За экономию чего именно ты воюешь? Ну вот добавишь ты двадцать TQuery - назови хоть один измеримый показатель, которому от этого станет заметно хуже. А то, что у тебя в проекте несколько форм, тебя не смущает? Не возникает желания обойтись одной, подменяя содержимое? Василий 2А если необходимо юзать несколько разных db-логинов (к примеру, интерфейс у них различается), то дизайнер тоже в пролете. Не понимаю, в чём ты видишь проблему. Это вообще перпендикулярные вещи. Разумеется, дизайнер ускоряет работу в этом режиме так же, как и в любом другом. Василий 2Опять же при изменении схемы БД я быстро найду старые запросы поиском по проекту, а тебе придется ворошить компоненты. Знаешь, даже смешно. Для тебя поиск по маске *.pas чем-то принципиально отличается от поиска по маске *.dfm? Василий 2В общем, все зависит от структуры и задач программы. Теоретически - да. Практически чаще всего зависит от программиста, у которого в руках молоток и который поэтому решил, что все задачи похожи на гвозди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 19:58 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Василий 2Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать. Ты не поверишь, так и работаем. Это называется Терминал !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 20:53 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
DimaBrВасилий 2Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать. Ты не поверишь, так и работаем. Это называется Терминал !!!Браузер, в принципе, для этого предназначался. Пока это понятие скриптами не завоняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 21:15 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
К советам стоит скептически относиться и не воспринимать всё буквально. Ситуации бывают разные, причем настолько, что превращают вроде бы полезный совет во вредный. Особенно это касается таких вещей типа где что хранить и какую архитектуру выбрать (на sql.ru, вроде, даже когда-то мемы ходили про очередные холивары про трехзвенки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 22:16 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
softwarerУгу. Это как раз иллюстрирует разницу в наших подходах. Ты идёшь наиболее очевидным путём: попробовал, увидел проблему, решил, что надо переключать. Переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал... задолбался и ушёл целиком в рантайм. Я же, попробовав и увидев проблему, чуть-чуть пораскинул мозгами и сделал так, чтобы дизайн-таймовый DB.Connected не мешал. Он у меня годами остаётся в true, просто не пытается восстанавливаться в ран-тайме, вот и все :) Я тоже сделал, но это было мне неудобно. Сейчас я сделал так, как удобно. На самом деле я бы мог сейчас задвинуть про модели и контроллеры, про отделение гуя от бизнес-логики и прочее, но не вижу смысла. Данный аспект не аксиома, пусть каждый делает так, как ему привычно и удобно. Ну а лично тебе желаю делать поменьше категоричных выводов, ибо когда они уходят в молоко, ты выглядишь очень бледно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 14:04 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Архитектурные предпочтения несколько из другой темы. во-первых изговнокодить можно любую архитектуру, т.е. это более общая тема. во-вторых спорить о предпочтительности того, или иного подхода можно только применительно к конкретной задаче. Для одного случая уместно одно, для другого случая уместно другое. И кстати говоря, для больших коммерческих проектов хорошо бы по-реже упоминать местоимение Я и по чаще использовать местоимение ОНИ (кто будет править твой код). Приложение пишут несколько лет, несколько людей (иных уже нет, а те далече). У каждого свой уровень познаний, свои предпочтения, свои девиации сознания наконец. Кто-то скажет "нафига мне db-компоненты, я сам умею добавлять итемы в комбобоксы", кто-то скажет "да я привык использовать отличную библиотеку XXX, 20 лет пользуюсь ни разу не подводила", кто-то начнет всё переписывать и уйдет в запой... в итоге каждый оставляет свой неповторимый след в истории. Так что лучше уж использовать стандартные подходы, ограниченный набор библиотек пусть он даже в каком-то частном случае хуже чем можно было бы написать самому, чтобы твои последователи меньше тратили времени и сил на осознание твоей гениальной задумки, а больше уделяли времени на исправление логики в соответствии с новыми задачами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 15:05 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
roschinspbспорить о предпочтительности того, или иного подхода можно только применительно к конкретной задаче. Для одного случая уместно одно, для другого случая уместно другое. Именно! У меня коллега вообще отказался от сторонних компонент, потому что не хочет морочиться с установкой :). Но для его целей хватает. Мне же, например, без VTV было бы очень тоскливо. roschinspbИ кстати говоря, для больших коммерческих проектов хорошо бы по-реже упоминать местоимение Я и по чаще использовать местоимение ОНИ (кто будет править твой код). Приложение пишут несколько лет, несколько людей (иных уже нет, а те далече). У каждого свой уровень познаний, свои предпочтения, свои девиации сознания наконец. Кто-то скажет "нафига мне db-компоненты, я сам умею добавлять итемы в комбобоксы", кто-то скажет "да я привык использовать отличную библиотеку XXX, 20 лет пользуюсь ни разу не подводила", кто-то начнет всё переписывать и уйдет в запой... в итоге каждый оставляет свой неповторимый след в истории. Так что лучше уж использовать стандартные подходы, ограниченный набор библиотек пусть он даже в каком-то частном случае хуже чем можно было бы написать самому, чтобы твои последователи меньше тратили времени и сил на осознание твоей гениальной задумки, а больше уделяли времени на исправление логики в соответствии с новыми задачами. Большие проекты, как правило, не начинаются в одиночку. И кодинг стиль у компании должен быть устоявшийся и закрепленный в мануалах, также как и любое привлечение сторонней библиотеки не может быть решением рандомного джуниора Пети. Ну а если речь о проектах одиночек, то нет смысла ужиматься - либо он так и останется собственным проектом, либо перейдет в категорию крупных и по-любому придется все переписывать и подгонять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 16:19 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Василий 2Большие проекты, как правило, не начинаются в одиночку. И кодинг стиль у компании должен быть устоявшийся и закрепленный Лично видел исходный код программы, которая под дулом пистолета навязывалась бизнесу по директиве сверху - я плакаль :( В коде коментарии типа "что делает этот кусок кода мы не знаем, но лучше не трогать" - в порядке вещей. А ты тут про крупные проекты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 17:08 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Василий 2... кодинг стиль у компании должен быть устоявшийся и закрепленный в мануалах, также как... Да, конечно, конечно, все люди должны быть здоровыми и богатыми. Только так уж вышло, что во всех крупных компаниях где я работал везде картина примерно одинаковая (зверинец компонентов, подходов, стилей форматирования). И почти все крупные проекты начинались либо одиночкой, либо небольшой группой единомышленников. Полагаю, что это скорее правило нежели исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 17:11 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
zinpubroschinspbпропущено... Не, сначала в OLE-объект Товарищи, вроде серьезный вопрос поднят, не каждый поймет искрометное чувство юмора И это слабенько... Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е... Хорошо придушили вовремя. У меня на эту идею выброшен был целый год. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 03:27 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Keep It Simple, Stupid. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 03:32 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
fraks zinpub Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е... Хорошо придушили вовремя. У меня на эту идею выброшен был целый год. :( У нас тоже был потрачен ГОД. И не в пустую, теперь Delphi открываем по праздникам. И обновление раз в пол года, хотя правки почти ежедневно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 07:38 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
DimaBrfraksУ меня на эту идею выброшен был целый год. :( У нас тоже был потрачен ГОД. И не в пустую, теперь Delphi открываем по праздникам. И обновление раз в пол года, хотя правки почти ежедневно. Ну, я как-то пришел к мысли что странно переписывать Delphi заново, причем на Delphi же, причем получив из компилятора интерпретатор. Какие-то наработки от всего этого конечно остались, но к интерпретатору Delphi не имеет никакого отношения. Обновление у меня бывает по нескольку раз на дню. Полученный exe загружаю в базу. Приложение при старте проверяет есть ли в базе версия новее чем оно само, если есть - выгружает и самообновляется. exe размером в 10мб не составляет проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 10:09 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
fraksexe размером в 10мб не составляет проблем. У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 10:12 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
alekcvpИли всё как у взрослых и установлена своя системная служба-обновлятор? :) Ох уж эти "взрослые" со своими службами-обновляторами... придушил бы. Каждая сволочь норовит в сервисы пролезть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 10:43 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Василий 2alekcvpИли всё как у взрослых и установлена своя системная служба-обновлятор? :) Ох уж эти "взрослые" со своими службами-обновляторами... придушил бы. Каждая сволочь норовит в сервисы пролезть. Вставь обновлятор в клиент и не парься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 11:30 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
alekcvpfraksexe размером в 10мб не составляет проблем. У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :) Это замечательное приложение для внутрикорпоративного использования. Вне фирмы не распространяется. Инсталлятора не имеет (за отсутствием надобности). Никакие службы не использует и не ставит. Нужен только клиент Firebird. Привилегии должны быть достаточными что бы заместить собственный exe. Программа-обновлятор лежит в этой же папке. Основная программа, когда определяет что ей нужно обновиться, запускает обновлятор (если он есть) со словами - обнови вот меня, вот оттуда. И закрывается. Обновлятор скачивает, замещает старый exe новым, запускает обновленную программу, сам завершается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 12:07 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
alekcvpfraksexe размером в 10мб не составляет проблем. У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :) И еще забыл. Новый exe кладется в базу. Соответственно, какие программы с этой базой работают, такие и обновляются. Если проходит такое обновление структуры БД что требует однозначного обновления всех клиентов - то клиентов завершаем принудительно (если на слова не реагируют). Если такой необходимости нет (в 50-90% случаев) - просто сообщаю тому кто заинтересован в новой версии что нужно перезапуститься. Остальные самообновляются утром, при очередном запуске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 12:10 |
|
||
|
Грамотно написать программу а не говнокод
|
|||
|---|---|---|---|
|
#18+
Программа обновляется из базы - это само собой разумеющееся, но ради мелких правок (там формочку новую слепить, отчётик подрисовать, даже орфографию подправить) нет смысла перекомпилировать. Плюс, я правку могу сделать с любого рабочего места, а компиляция - увы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 12:12 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39630551&tid=2040998]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 494ms |

| 0 / 0 |
