LINUX.ORG.RU
ФорумTalks

Delphi: это могло случиться с вами


0

0

(*---------------------------------------------------------------------------
  Procedure:   IsTrue
  Author:      jed
  Date:        26-Aug-2003
  Description: useful for determining the boolean result of an expression
---------------------------------------------------------------------------:*)
function IsTrue(Expression: TExpression): Boolean;
var
  ResultHasBeenSet: Boolean;
begin
  Result:=(Random(2)=0)=True;
  ResultHasBeenSet:=False;

  // if the expression is true then the result will be true, otherwise (since the
  // expression couldn't be true) the result will be false.  There are no other
  // mathematical possibilities
  begin
    if (Expression=True) then
    begin
      Result:=True;
      ResultHasBeenSet:=True;
    end;

    if (Expression=False) then
    begin
      Result:=False;
      ResultHasBeenSet:=True;
    end;
  end;

  // need to set the result if it hasn't been set yet, we'll randomly decide true or false
  // because there should be no bias.
  if IsTrue(ResultHasBeenSet)=IsTrue(0=1)
    then Result:=((Random(2)=Random(2))=True)
    else Result:=(Result=True);

  // P.S.
  //   This function could also be adapted to tell you if some expression is false
  // by prefixing the expression (or the result) with the 'not' operator.  You can
  // find out more about the 'not' operator in the online help.
end; http://thedailywtf.com/forums/43457/ShowPost.aspx
anonymous

не верю. Нельзя быть настолько тупым, просто нельзя

phoenix ★★★★
()

а я че то не понял... в чем юмор?

dipe
()

Заголовок прослезил, самое время собирать пожертвования.

applesin
()

это типа гулял по стройке, на голову упал кирпич, стал delphi-кодером?

Deleted
()

А чему вы удивляетесь? Сейчас это повсеместно так. Каждый третий исходник, с которым я сталкиваюсь, состоит на 80% из обыкновенной воды, H2O. Множество функций/методов, каждая из которых выполняет идиотскую элементарную операцию, которую можно было сделать просто в коде и забыть, потому что в 50% случаев они ещё и одноразовые - вызываются 1 (один) раз. Зато вокруг каждой строки по 10 строк коммантариев, в которых аффтар размашисто и смачно жуёт сопли по поводу и без повода. А потом они с неописуемой гордостью хвалятся "проектами из десятков тысяч строк".

Кстати, мне до сих пор никто не смог внятно объяснить, почему в том же C++ считается некошерным делать публичные свойства объекта - якобы надо все их делать приватными, а для доступа предусматривать фунцкии-member'ы.

Типа

ObjInstance.Enabled=true

некошерно. Надо, чтобы

ObjInstance.setEnabled(true)

Кому от этого лучше? Аффтару, который по этой причине написал больше строк (ему ж теперь ещё setEnabled надо изобретить с тупым тривиальным содержимым - и обязятельно, млять, с комментариями) и поэтому член у него длиннее?

anonymous
()
Ответ на: комментарий от anonymous

Зачем писать setEnabled(), если можно перегрузить operator=()?

> Кстати, мне до сих пор никто не смог внятно объяснить, почему в том же C++ считается некошерным делать публичные свойства объекта - якобы надо все их делать приватными, а для доступа предусматривать фунцкии-member'ы.

На примере базы данных: Вы предпочтёте, что бы работа с базой осуществлялась через отлаженый интерфейс ваших функций или же что бы клиент писал данные в базу как в ексель от руки, выполняя расчеты и прочие операции на своей стороне? Для тривиальных вещей используется struct.

mutronix ★★★★
()
Ответ на: комментарий от Gharik

по линку описано же всё. Он бабки получал на работе, пока оттуда не выгнали

anonymous
()
Ответ на: комментарий от anonymous

>почему в том же C++ считается некошерным делать публичные свойства объекта - якобы надо все их делать приватными, а для доступа предусматривать фунцкии-member'ы

Потому что однажды внутренности объекта могут измениться. А интерфейс должен остаться прежним.

Xellos ★★★★★
()
Ответ на: комментарий от anonymous

> Типа

> ObjInstance.Enabled=true

> некошерно.

Совершенно верно

> Надо, чтобы

> ObjInstance.setEnabled(true)

Ок. Тебе потребовался notify на изменение данного свойства. Тот, кто оформил изменение приватного поля через метод, просто модифицировал метод и продолжил заниматься делом. А ты, такой вот непризнаный гений, все упростил вчера, а сегодня ползаешь по всему коду выискивая ".Enabled:=".

Иное дело, что если идет речь о дельфе, то имеет смысл объявить свойство (property), при зименении которого компилятор автоматически будет вызывать setEnabled - но это уже частности реализации. И кстати да, за введение public-атрибутов без серьезного на то основания надо руки рубить.

no-dashi ★★★★★
()

кроме того, это еще и рекурсивный фэйк разумного кода

anonymous
()
Ответ на: комментарий от anonymous

Короче, тебе читать тут

http://ru.wikipedia.org/wiki/Инкапсуляция_(в_объектно-ориентированном_программир овании)

и да, завтра тебе в школу "аффтор" :)

поздравляем!

guardian
()
Ответ на: комментарий от lester_dev

> > This guy is just a monumental waste of carbon.

> полностью согласен

s/carbon/bioreactor\ fuel/

Gharik
()

О Боже! А я ж тоже делфи щупал када-то... ужас. С такого тупизма не смеяццо - плакать нужно.

Komintern ★★★★★
()

Delphi - мощное и удобное средство RAD. И если вам нарвится что-то другое - это ващи сексуальные проблемы.

А тех идиотов, которые пытаются на Delphi писать системные утилиты или забывают что инструмент без мозга не работает - тех действительно фтопку.

anonymous
()
Ответ на: комментарий от hatefu1_dead

>> Delphi - мощное и удобное средство RAD.

>ЛПиП.

Пример ваших проектов для бизнеса на другом средстве, которое вы считаете более прогодным в студию.

anonymous
()
Ответ на: комментарий от hatefu1_dead

Вот вам STK http://www.agi.com/. У них все началось с заказа для ESA. Морды под *nix, в т.ч. под Linux, сделаны на Tk, под винду - Delphi.

anonymous
()
Ответ на: комментарий от hatefu1_dead

За последний год:

1. Прогнозирование для аптеки - имелись данные о ежедневных продажах товара, за последние пять лет, примерно 20 000 наименований, требовалось построить прогноз продаж на ближайший месяц. Разработка и тестирование заняли около 1 месяца, за 40 минут строится прогноз по всем пунктам на неделю, за 2 часа - на месяц. Прогноз по 3000 топовых товаров строится на 10-12 минут. Печатные отчеты, связь с 1С.

2. Касса. Классика, учет движения денсредств между неск. подразделениями 1 холдинга, онлайновая работа нескольких операторов, дофига отчетов, разработка базовой версии около недели, доработка функционала - около 3 месяцев.

3. Мучная тема - заказы, поставщики, долги, отчеты, колдунская система рассчета штрафов, так же онлайновый режим, разработка весь год в стиле классичекого RAD - менегер прибегает с выпученными глазами и орет чобы завтра такая-то функция была реализована.

4. Еще куча мелких программок, в основном финансовые калькуляторы, прочие полезности с небольшим скроком жизни. Главные задачи - быстро, удобно, безошибочно.

Исходники дать не могу, только скриншеты, не под ГПЛ такие вещи пишутся, за их базы конкуренты бы перегрызлись.

Ваш ход?

anonymous
()
Ответ на: комментарий от anonymous

Пожалуйста, встройте механизм генерации скриншотов в реальном времени и отправки на удаленный сервер.

А, проги то - кроссплатформенные? Иль там на перле, аль на чем?

Gharik
()
Ответ на: комментарий от Gharik

> Пожалуйста, встройте механизм генерации скриншотов в реальном времени и отправки на удаленный сервер.

Легко, минут 15 потребуется

> А, проги то - кроссплатформенные? Иль там на перле, аль на чем?

Delphi 6 / Kylix 2, причем скомпилированные в винде прекрасно запускаются через wine. Кстати, сколько на перле займет написание ну например визуального представления дерева бухгалтерского баланса?

anonymous
()
Ответ на: комментарий от anonymous

> Delphi - мощное и удобное средство RAD. И если вам нарвится что-то другое - это ващи сексуальные проблемы.
+1
А те, кто не согласен пусть подрастут!
Может их юношеский гипермаксимализм куда-нибудь денется, когда придётся зарабатывать деньги!

UVV ★★★★★
()
Ответ на: комментарий от anonymous

> Легко, минут 15 потребуется

Да это понятно, что легко, а сколько будет стоит такое обновление и рассылка его клиентам, а также слив списка оных клиентов на сторону? :)

> Delphi 6 / Kylix 2, причем скомпилированные в винде прекрасно запускаются через wine. Кстати, сколько на перле займет написание ну например визуального представления дерева бухгалтерского баланса?

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

Gharik
()
Ответ на: комментарий от anonymous

>4. Еще куча мелких программок, в основном финансовые калькуляторы, прочие полезности с небольшим скроком жизни. Главные задачи - быстро, удобно, безошибочно.

Таффай, тафай, скажи за сколько продал последний финансовый калькулятор? А то мож скинемсо всем форумом и купим на "посмотреть"?

anonymous
()
Ответ на: комментарий от anonymous

для компиляции в kylix что-гибудь затачивать пришлось?

anonymous
()
Ответ на: комментарий от Gharik

> Да это понятно, что легко, а сколько будет стоит такое обновление и рассылка его клиентам, а также слив списка оных клиентов на сторону? :)

Ни сколько это не стоит, курьер привозит в подразделения новые версии программ на дискете, в особо срочных случаях можно и по модему скачать, проги не более 1,5 Мб (если без фастовских отчетов).

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

Вот, оторванные от реальности программисты, привыкшие жить в виртуальном мире... А если еще нужно управлять этим деревом управлять, удалять/добавлять/перемещать показатели, подсчитывать дневные/декадные/квартальные суммы?

>Таффай, тафай, скажи за сколько продал последний финансовый калькулятор? А то мож скинемсо всем форумом и купим на "посмотреть"?

Лучше скинься на комп для разработчика OpenBSD, ато так 64 офиса не дождемся. А проги написанные в рабочее время принадлежат не мне.

>для компиляции в kylix что-гибудь затачивать пришлось? В Kylix писалась только касса, компоненты все стандартные, IB. Потом только библиотеки с ней закидывал и никаких сложностей.

anonymous
()
Ответ на: комментарий от hatefu1_dead

> пример ваших проектов для бизнеса на этом "средстве" в студию.

У вас так много проектов что не можете их описать за сутки? Или постите по типу "больше газа в наших лужах"?

anonymous
()
Ответ на: комментарий от anonymous

> Вот, оторванные от реальности программисты, привыкшие жить в виртуальном мире...

Наш лес != всему миру, а я вообще не программист, так - перлом иногда балуюсь в темных админских целях, да не предмет отчетец на автомате соорудить по поводу какой-нибудь фигни ;)

> А если еще нужно управлять этим деревом управлять, удалять/добавлять/перемещать показатели, подсчитывать дневные/декадные/квартальные суммы?

Нечто типа 1С? Нафиг, нафиг... такое действительно лучше кодить на чем-то дельфе-бейсикоподобном и только под венды, иначе простой чел-бухгалтер ниасилит ни в жизнь.

> Лучше скинься на комп для разработчика OpenBSD, ато так 64 офиса не дождемся.

У меня он и так на линуксе работает, лично портировал за пару дней ;) Посмотрим сколько времени тот джедай будет париться.

Gharik
()
Ответ на: комментарий от mutronix

> Зачем писать setEnabled(), если можно перегрузить operator=()?

А зачем? К чему вообще эти тупые бессмысленные действия? Чтобы внести как можно больше путаницы и создать несколько десятков способов сделать одно и то же? Ни один программер не будет изучать ВСЕ эти ваши способы, в большинстве случаев они найдут первый, который работает, и будут ВСЕГДА использовать именно его. Другой программер найдёт другой способ, третий - третий и т.д. А потом один не сможет прочесть мазню другого.

> На примере базы данных: Вы предпочтёте, что бы работа с базой осуществлялась через отлаженый интерфейс ваших функций или же что бы клиент писал данные в базу как в ексель от руки, выполняя расчеты и прочие операции на своей стороне?

Если я разрешаю юзеру что-то менять, то я знаю, на что иду. В противном случае я делаю приватное свойство. В случае переменной типа bool у юзера 2 (два) варианта, ошибиться он НЕ СМОЖЕТ.

anonymous
()
Ответ на: комментарий от record

> Код без комментов _вам_ же станет дороже ;-)

Серьёзно? Вы уверены, что мне надо объяснять, что делает метод setEnabled? Чё, правда? Комментарии нужны там, где что-то неочевидно. Или перед тем, как начать новый этап: кратко, что именно собираемся делать. Именно кратко и по существу, а не отрывок из "Войны и мира" с жеванием соплей, что я в большинстве случаев наблюдаю.

anonymous
()
Ответ на: комментарий от Xellos

>> почему в том же C++ считается некошерным делать публичные свойства объекта - якобы надо все их делать приватными, а для доступа предусматривать фунцкии-member'ы

> Потому что однажды внутренности объекта могут измениться. А интерфейс должен остаться прежним.

Оп-па. Однажды может измениться что угодно. Надо просто ДУМАТЬ, прежде чем менять. И думать, прежде чем делать переменную публичной. Пока же я наблюдаю то, что опровергает твоё заявление: при переходе от Qt3 к Qt4 переименовывались - в массовом порядке - именно МЕТОДЫ, т.е. функции. Ну, и? Какая на хрен разница, переименовали бы они функцию или переменную? Не убедил, короче.

anonymous
()
Ответ на: комментарий от anonymous

А собственно, что кроме природной лени мешает оставить оба способа? В обсуждаемой Delphi так и есть, хочу - делаю Query1.Active := True; хочу - вызываю Query1.Open. Опять же для некоторых объектов удобнее считать/записать свойство типа Font.Color чем по отдельности вызывать GetColor и SetColor.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.