понедельник, 1 февраля 2010 г.

Does an incorrect environment force you to an incorrect behaviour?

Today I understood my grudge against Delphi IDE and Object Pascal in general (I'm forced to use Delphi 7 at work).
One of my Delphi applications is Switch management GUI which looks like this:

The IP list is rendered within cxGrid component from DevExpress. It consists of two columns - row number and IP. I wanted to implement copying (WM_COPY) of the second column value only, but cxGrid does not allow this, because it copies the whole line, all the columns.
I did not implement handling of Ctrl+C, because there exist another standard shortcut for copying things in Windows - Ctrl+Insert. So handling concrete key bindings is wrong.
There's WM_COPY Windows message. Unfortunately, the cxGrid intercepts these messages, so I have no opportunity to handle it myself.
So I has to do one of the two bad things:
1) handle concrete key binding;
2) obey cxGrid limitation.
I chose the latter of two evils: I hid the first column. Now copying of the whole cxGrid line only copies one column value. At the same time I screwed the functionality up.

I saw the same bad pattern in Object Pascal, of which many people talked about already: interface and implementation within a single (!) file, call back functions on events, etc.. I wish I could use Qt4.

Thus I came to a question: "Does an incorrect environment force you to an incorrect behaviour?"
I'm forced to follow bad coding style, how does that affect me? Does it make my coding bad too? Does it corrupt my judgement?
I think yes. That makes me want to quit this job.

--- RU ---

Влияет ли неверное окружение к принятию неверных решений?

Сегодня я понял своё неприятие Delphi IDE и Object Pascal в принципе (я вынужден использовать Delphi 7 на работе).
Одно из моих приложений - ГУИ управления свитчами - выглядит следующим образом:

Список IP выводится в компоненте cxGrid от DevExpress. Он состоит из двух колонок - номер строки и IP. Я хотел реализовать копирование (WM_COPY) значения лишь во втором столбце, но cxGrid не позволяет это сделать, т.к. копирует всю строку, т.е. значения в обоих колонках.
Я не реализовал отлов Ctrl+C, т.к. существует ещё одно стандартное сочетание клавиш для копирования в Windows - это Ctrl+Insert. Поэтому ловить конкретные сочетания плохо.
Существует сообщение Windows WM_COPY. К сожалению, cxGrid перехватывает эти сообщения, поэтому я не могу переопределить его.
Приходится выбирать из двух неверных вещей:
1) ловить конкретные сочетания клавиш;
2) смириться с ограничениями cxGrid.
Я выбрал второе из зол: скрыл первый столбец. Теперь копирование всей строки cxGrid лишь копирует значение одной колонки. В то же время, я ухудшил функциональность.

Ту же неверную схему я наблюдаю и в Object Pascal, о которой уже говорили многие: интерфейс и реализация в пределах одного (!) файла, обратный вызов (callback) на события и т.п.. Жаль, что я не могу использовать Qt4.

Таким образом я пришёл к вопросу: "Влияет ли неверное окружение к принятию неверных решений?" Я вынужден следовать неверному стилю написания кода, как это влияет на меня? Делает ли это мой стиль написания кода неверным тоже? Искажает ли это мои суждения?
Думаю, да. Это вызывает у меня желание покинуть работу.

Комментариев нет: