powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Грамотно написать программу а не говнокод
25 сообщений из 129, страница 4 из 6
Грамотно написать программу а не говнокод
    #39628914
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovYuRockпропущено...
Лично у меня это - "класс в приложении" с прекрытыми виртуальными методами.

В таком случае может сработать универсальный класс, в котором детали обмена с конкретной моделью задаются в виде конфигурации, скажем в XML. Ну, или, если разница слишком велика, в виде скриптов.

Опять универсальный решатель всего и вся ? C XML и блютусом ?
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39628929
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте плагины и интерфейсы и проблемы расширяемости практически решены.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39628930
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокDimaBrСледующий этап - формы в базу.
Не-а, формы - в dll, а лишь потом - в базу ;) Не, сначала в OLE-объект

Товарищи, вроде серьезный вопрос поднят, не каждый поймет искрометное чувство юмора
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39628944
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roschinspbДокпропущено...

Не-а, формы - в dll, а лишь потом - в базу ;) Не, сначала в OLE-объект

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

И это слабенько...
Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е...

Хорошо придушили вовремя.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629021
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014Используйте плагины и интерфейсы и проблемы расширяемости практически решены.
Да чё там практически - полностью. За исключением тех "редких" случаев, когда меняется интерфейс этих плагинов.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629429
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubПыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е...

Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать.

softwarerВасилий 2Обоснуй
Подход подразумевает невозможность открыть датасет в дизайн-тайме. Следовательно, многие возможности отладки и настройки в дизайн-тайме тоже недоступны, плодится куча тупейшего кода, для отлова тривиальных ситуаций типа "поле на десять пикселей уже, чем значение" или там "опечатка в названии поля" требуется запуск программы, а для проверки исправления - ещё один запуск. Итого медленная неэффективная разработка и тупой код в результате.
Я тоже в юношестве таким баловался. Когда задолбался переключать DB.Connected, сохраняющийся в True после развлечений в дизайнере и пытающийся восстановиться при запуске программы у клиента, как-то остыл. К тому же не все запросы отображаются визуально, бывает и внутренняя кухня, которую надо генерить динамически. У меня в проекте штук двадцать разных внутренних запросов - что же, на каждый добавлять TQuery? А если необходимо юзать несколько разных db-логинов (к примеру, интерфейс у них различается), то дизайнер тоже в пролете. Опять же при изменении схемы БД я быстро найду старые запросы поиском по проекту, а тебе придется ворошить компоненты.
В общем, все зависит от структуры и задач программы.
roschinspbВасилий 2- Не хранить тексты запросов в свойствах компонентов - dfm файлы часто исключены из фильтра поиска, и в случае чего искать текст придется долго. Я в одном проекте (всё на ХП, запросов немного) выделил все тексты в секцию констант одного юнита, а в другом (клиентский софт для БД с кучей таблиц) задаю их константами внутри методов, но обязательно добавляю к имени суффикс SQL, чтобы облегчить поиск в случае чего.
Т.е. не любите Вы визуальное программирование. Ну, это дело вкуса. Я так наоборот считаю, что надо максимально использовать db-aware компоненты и DataSet`ы на DataModu`лях. Открывать тут холивары на тему лениво, но вот что бесспорно так это то, что по возможности надо придерживаться одного подхода. Потому, что когда исправляешь что-то в dfm-ке, а потом где-то глубоко в коде пара символов исправляется на нечто иное, то это печаль, особенно в большихстарыхчужих проектах.
Я к нему спокойно отношусь. Кидать контролы удобно, но вот копошиться с пикселами, выравниванием и прочим меня задалбывает.
Насчет свойств компонентов как раз тоже из опыта. Неоднократно бывало, что по полчаса ищу некоторую опцию, которую нужно добавить в другой компонент или наоборот изъять. Особенно весело, когда это нечто монструозное типа грида или virtualtreeview.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629443
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Я тоже в юношестве таким баловался. Когда задолбался переключать DB.Connected, сохраняющийся в True после развлечений в дизайнере и пытающийся восстановиться при запуске программы у клиента, как-то остыл.
Угу. Это как раз иллюстрирует разницу в наших подходах. Ты идёшь наиболее очевидным путём: попробовал, увидел проблему, решил, что надо переключать. Переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал... задолбался и ушёл целиком в рантайм. Я же, попробовав и увидев проблему, чуть-чуть пораскинул мозгами и сделал так, чтобы дизайн-таймовый DB.Connected не мешал. Он у меня годами остаётся в true, просто не пытается восстанавливаться в ран-тайме, вот и все :)

Василий 2К тому же не все запросы отображаются визуально, бывает и внутренняя кухня, которую надо генерить динамически.
Бывает. И мой подход никак не мешает делать это там, где оно оправданно. Твой же подход означает, что динамика используется даже там, где она существенно хуже, этим и вызвана моя реплика.

Василий 2У меня в проекте штук двадцать разных внутренних запросов - что же, на каждый добавлять TQuery?
Знаешь, проект на двадцать запросов, в общем, может быть написан вообще как угодно, это совершенно неважно для всех, кроме разве что автора. Но сама по себе постановка вопроса катастрофически нелепа. За экономию чего именно ты воюешь? Ну вот добавишь ты двадцать TQuery - назови хоть один измеримый показатель, которому от этого станет заметно хуже. А то, что у тебя в проекте несколько форм, тебя не смущает? Не возникает желания обойтись одной, подменяя содержимое?

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

Василий 2Опять же при изменении схемы БД я быстро найду старые запросы поиском по проекту, а тебе придется ворошить компоненты.
Знаешь, даже смешно. Для тебя поиск по маске *.pas чем-то принципиально отличается от поиска по маске *.dfm?

Василий 2В общем, все зависит от структуры и задач программы.
Теоретически - да. Практически чаще всего зависит от программиста, у которого в руках молоток и который поэтому решил, что все задачи похожи на гвозди.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629483
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать.
Ты не поверишь, так и работаем. Это называется Терминал !!!
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629492
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrВасилий 2Зачем вообще исполнять на клиенте? Надо исполнять все на сервере, а клиенту кидать видео интерфейса )))) ну и мышку-клаву от него ловить и на сервер передавать.
Ты не поверишь, так и работаем. Это называется Терминал !!!Браузер, в принципе, для этого предназначался. Пока это понятие скриптами не завоняли.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629523
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К советам стоит скептически относиться и не воспринимать всё буквально. Ситуации бывают разные, причем настолько, что превращают вроде бы полезный совет во вредный. Особенно это касается таких вещей типа где что хранить и какую архитектуру выбрать (на sql.ru, вроде, даже когда-то мемы ходили про очередные холивары про трехзвенки).
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629858
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerУгу. Это как раз иллюстрирует разницу в наших подходах. Ты идёшь наиболее очевидным путём: попробовал, увидел проблему, решил, что надо переключать. Переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал, переключал... задолбался и ушёл целиком в рантайм. Я же, попробовав и увидев проблему, чуть-чуть пораскинул мозгами и сделал так, чтобы дизайн-таймовый DB.Connected не мешал. Он у меня годами остаётся в true, просто не пытается восстанавливаться в ран-тайме, вот и все :)
Я тоже сделал, но это было мне неудобно. Сейчас я сделал так, как удобно.
На самом деле я бы мог сейчас задвинуть про модели и контроллеры, про отделение гуя от бизнес-логики и прочее, но не вижу смысла. Данный аспект не аксиома, пусть каждый делает так, как ему привычно и удобно. Ну а лично тебе желаю делать поменьше категоричных выводов, ибо когда они уходят в молоко, ты выглядишь очень бледно.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39629932
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архитектурные предпочтения несколько из другой темы.
во-первых изговнокодить можно любую архитектуру, т.е. это более общая тема.
во-вторых спорить о предпочтительности того, или иного подхода можно только применительно к конкретной задаче. Для одного случая уместно одно, для другого случая уместно другое.

И кстати говоря, для больших коммерческих проектов хорошо бы по-реже упоминать местоимение Я и по чаще использовать местоимение ОНИ (кто будет править твой код).
Приложение пишут несколько лет, несколько людей (иных уже нет, а те далече). У каждого свой уровень познаний, свои предпочтения, свои девиации сознания наконец. Кто-то скажет "нафига мне db-компоненты, я сам умею добавлять итемы в комбобоксы", кто-то скажет "да я привык использовать отличную библиотеку XXX, 20 лет пользуюсь ни разу не подводила", кто-то начнет всё переписывать и уйдет в запой... в итоге каждый оставляет свой неповторимый след в истории. Так что лучше уж использовать стандартные подходы, ограниченный набор библиотек пусть он даже в каком-то частном случае хуже чем можно было бы написать самому, чтобы твои последователи меньше тратили времени и сил на осознание твоей гениальной задумки, а больше уделяли времени на исправление логики в соответствии с новыми задачами.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630011
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspbспорить о предпочтительности того, или иного подхода можно только применительно к конкретной задаче. Для одного случая уместно одно, для другого случая уместно другое.
Именно! У меня коллега вообще отказался от сторонних компонент, потому что не хочет морочиться с установкой :). Но для его целей хватает. Мне же, например, без VTV было бы очень тоскливо.
roschinspbИ кстати говоря, для больших коммерческих проектов хорошо бы по-реже упоминать местоимение Я и по чаще использовать местоимение ОНИ (кто будет править твой код).
Приложение пишут несколько лет, несколько людей (иных уже нет, а те далече). У каждого свой уровень познаний, свои предпочтения, свои девиации сознания наконец. Кто-то скажет "нафига мне db-компоненты, я сам умею добавлять итемы в комбобоксы", кто-то скажет "да я привык использовать отличную библиотеку XXX, 20 лет пользуюсь ни разу не подводила", кто-то начнет всё переписывать и уйдет в запой... в итоге каждый оставляет свой неповторимый след в истории. Так что лучше уж использовать стандартные подходы, ограниченный набор библиотек пусть он даже в каком-то частном случае хуже чем можно было бы написать самому, чтобы твои последователи меньше тратили времени и сил на осознание твоей гениальной задумки, а больше уделяли времени на исправление логики в соответствии с новыми задачами.
Большие проекты, как правило, не начинаются в одиночку. И кодинг стиль у компании должен быть устоявшийся и закрепленный в мануалах, также как и любое привлечение сторонней библиотеки не может быть решением рандомного джуниора Пети. Ну а если речь о проектах одиночек, то нет смысла ужиматься - либо он так и останется собственным проектом, либо перейдет в категорию крупных и по-любому придется все переписывать и подгонять.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630034
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Большие проекты, как правило, не начинаются в одиночку. И кодинг стиль у компании должен быть устоявшийся и закрепленный
Лично видел исходный код программы, которая под дулом пистолета навязывалась бизнесу по директиве сверху - я плакаль :( В коде коментарии типа "что делает этот кусок кода мы не знаем, но лучше не трогать" - в порядке вещей. А ты тут про крупные проекты :)
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630451
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2... кодинг стиль у компании должен быть устоявшийся и закрепленный в мануалах, также как... Да, конечно, конечно, все люди должны быть здоровыми и богатыми. Только так уж вышло, что во всех крупных компаниях где я работал везде картина примерно одинаковая (зверинец компонентов, подходов, стилей форматирования). И почти все крупные проекты начинались либо одиночкой, либо небольшой группой единомышленников. Полагаю, что это скорее правило нежели исключение.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630550
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubroschinspbпропущено...
Не, сначала в OLE-объект

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

И это слабенько...
Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е...

Хорошо придушили вовремя.

У меня на эту идею выброшен был целый год. :(
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630551
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Keep It Simple, Stupid.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630565
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks zinpub
Пыталась родиться идея - Хранить исходники(pas) в базе, а исполнять в paxScript'е...

Хорошо придушили вовремя.

У меня на эту идею выброшен был целый год. :(
У нас тоже был потрачен ГОД. И не в пустую, теперь Delphi открываем по праздникам. И обновление раз в пол года, хотя правки почти ежедневно.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630617
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrfraksУ меня на эту идею выброшен был целый год. :(
У нас тоже был потрачен ГОД. И не в пустую, теперь Delphi открываем по праздникам. И обновление раз в пол года, хотя правки почти ежедневно.

Ну, я как-то пришел к мысли что странно переписывать Delphi заново, причем на Delphi же, причем получив из компилятора интерпретатор. Какие-то наработки от всего этого конечно остались, но к интерпретатору Delphi не имеет никакого отношения.

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

exe размером в 10мб не составляет проблем.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630619
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksexe размером в 10мб не составляет проблем.

У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :)
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630646
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpИли всё как у взрослых и установлена своя системная служба-обновлятор? :)
Ох уж эти "взрослые" со своими службами-обновляторами... придушил бы. Каждая сволочь норовит в сервисы пролезть.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630695
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2alekcvpИли всё как у взрослых и установлена своя системная служба-обновлятор? :)
Ох уж эти "взрослые" со своими службами-обновляторами... придушил бы. Каждая сволочь норовит в сервисы пролезть.

Вставь обновлятор в клиент и не парься.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630723
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpfraksexe размером в 10мб не составляет проблем.

У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :)

Это замечательное приложение для внутрикорпоративного использования.
Вне фирмы не распространяется.
Инсталлятора не имеет (за отсутствием надобности).

Никакие службы не использует и не ставит.
Нужен только клиент Firebird.

Привилегии должны быть достаточными что бы заместить собственный exe.
Программа-обновлятор лежит в этой же папке.
Основная программа, когда определяет что ей нужно обновиться, запускает обновлятор (если он есть) со словами - обнови вот меня, вот оттуда. И закрывается. Обновлятор скачивает, замещает старый exe новым, запускает обновленную программу, сам завершается.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630730
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpfraksexe размером в 10мб не составляет проблем.

У каждого пользователя (компьютера) своя версия программы или это из тех "замечательных" приложений, которые запускаются только под elevated-привилегиями? Или всё как у взрослых и установлена своя системная служба-обновлятор? :)

И еще забыл. Новый exe кладется в базу. Соответственно, какие программы с этой базой работают, такие и обновляются.
Если проходит такое обновление структуры БД что требует однозначного обновления всех клиентов - то клиентов завершаем принудительно (если на слова не реагируют). Если такой необходимости нет (в 50-90% случаев) - просто сообщаю тому кто заинтересован в новой версии что нужно перезапуститься. Остальные самообновляются утром, при очередном запуске.
...
Рейтинг: 0 / 0
Грамотно написать программу а не говнокод
    #39630732
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа обновляется из базы - это само собой разумеющееся, но ради мелких правок (там формочку новую слепить, отчётик подрисовать, даже орфографию подправить) нет смысла перекомпилировать. Плюс, я правку могу сделать с любого рабочего места, а компиляция - увы
...
Рейтинг: 0 / 0
25 сообщений из 129, страница 4 из 6
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Грамотно написать программу а не говнокод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]