В Советской Белоруссии SQL разжигает айседа
http://theiced.livejournal.com/238346.html
Собственно, про кобол я не знаю, на дельфи пишу уже 15 лет и никак избавится от него не могу (слишком много легаси кода), а вот про SQL я с ним не согласен.
Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.
Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.
Например, проклятая тема - генерация автоинкрементных ключей и возвращение значений автоматически заполненных полей. Кто во что горазд - identity, генераторы, sequence, функции (в каждой СУБД названные по разному), returning, заебы на тему "вызывать в той же транзакции и сессии" и прочая и прочая. Про вариации на тему "вернуть поле, которое заполняется автоматически, но не является ключом/identity" лучше даже не думать.
Неудивительно, что люди при первой же возможности сбегают в ORM (которые являются уже второй производной от всего этого маразма и несут на себе его неизгладимый след).
Собственно, про кобол я не знаю, на дельфи пишу уже 15 лет и никак избавится от него не могу (слишком много легаси кода), а вот про SQL я с ним не согласен.
Сам по себе SQL очень хорошо подходит для генерации отчетов. Если отчет сводится к фильтрации-сортировке-группировке множеств - идеально. С рекурсивными CTE - еще и деревья можно обрабатывать, не особо включая мозг. Всунув поверх этого минимальных размеров постобработку на какой-нибудь функциональщине, можно сделать почти любой отчет, пришедший в голову свихнувшимся на Excel выпускникам нархоза, работающим в минстате, минфине и МНС.
Но когда доходит до процедурных расширений, API между СУБД и клиентскими приложениями или каких-нибудь вещей, которые забыли вовремя добавить в стандарт - начинается полная, немыслимая жопа.
Например, проклятая тема - генерация автоинкрементных ключей и возвращение значений автоматически заполненных полей. Кто во что горазд - identity, генераторы, sequence, функции (в каждой СУБД названные по разному), returning, заебы на тему "вызывать в той же транзакции и сессии" и прочая и прочая. Про вариации на тему "вернуть поле, которое заполняется автоматически, но не является ключом/identity" лучше даже не думать.
Неудивительно, что люди при первой же возможности сбегают в ORM (которые являются уже второй производной от всего этого маразма и несут на себе его неизгладимый след).
no subject
Они никак не отражают сути того, что делают эти методы.
далее, в методе F2 у вас несколько раз используются одни и те же строковые константы: 'id', 'name'. Положено такие вещи выносить хотя бы константы на уровне класса.
Комментарии в конце строки, заключенные в {} - неоправданы. 100 лет как для этой цели используется синтаксис комментариев с //
Конструкция if .. then Exit в одну строку. Правильный формат - Exit переносится на следующую строку с отступом как на следующий блок кода.
no subject
>> Они никак не отражают сути того, что делают эти методы.
На самом деле именно суть они и отображают.
У меня приняты некоторые клавиатурные комбинации, во всех формах где они имеют смысл они реализованы.
Во многих программах нажатие кнопки F5 производит обновление данных в окне. Именно это и делает эта функция. Первоначальное это заполнение или обновление, без разницы. Стоя на гриде с данными юзер нажимает F5 и он обновляется новыми данными с сервера.
F2 - аналогично - стоя на гриде с данными вызываем просмотр и редактирование свойств объекта который отображается текущей записью.
no subject
Суть = словесное название того действия, которое делает метод. F2 - это не действие, не такого слова. То, что вы назвали, должно было у вас называться .Refresh() или как-то так.
F2 - .Save()
>Мне так не нравится, читается хуже.
>Я если переношу действие на вторую строку - то вместе с then
Есть отраслевые стандарты. Ваш код потом будет тяжело воспринимать.
Я сам таким грешил раньше.
no subject
Стараюсь избегать длинных идентификаторов т.к. они долго читаются.
А закодировать, тем более по названиям клавиш действия которые есть практически в каждой форме и смысл у них один и тот - же - почему нет?
Что хорошо в стандартах - всегда можно выбрать нужный или изобрести свой :)
no subject
no subject
no subject
Потому что это примерно как вы бы назвали метод, который делает обновление: "ВерхнийРядЧетвертаяКлавиша".
Метод делает определенное действие, как правило название у него - глагол. Это общие принципы.
Update(), Delete(), Refresh() - это все глаголы. F5 - это существительное.
То есть с вашей стороны получается слишком много собственных додумок и нарушений принятых вещей. Вы же свою собачку не назовете именем "Смотреть" или "Гавкать" ? :)
no subject
no subject
Если на форме более чем по одному разу есть F2 или F5 (например несколько вкладок с гридами) - тогда эти функции с суффиксами делаю.
no subject
Даже в Delphi на сколько я помню была такая удобная вещь, как Actions, которые можно было потом навешивать на нужные контролы.
no subject
>> или при нажатии кнопки.
Ну так же и сделано. F2 - это не обработчик OnClick а метод формы.
no subject
Мне так не нравится, читается хуже.
Я если переношу действие на вторую строку - то вместе с then
if 111
then d := 1;
а если есть begin end - то по другому
if 111 then begin
d := 1;
c := 2;
end;{}