Drag n 'Drop Controls - зло? - PullRequest
       18

Drag n 'Drop Controls - зло?

3 голосов
/ 21 января 2009

Я терпеть не могу перетаскивать элементы управления, такие как потоки и таймеры. Эти элементы управления просто слишком далеки от реальной сущности их существа. Перетащить нить нить? Я надеюсь, что drag n 'dropper поймет, что происходит под одеялом, прежде чем они это сделают.

Эти абстракции слишком далеки от металла? Они помогают или вредят программистам?

Ответы [ 9 ]

6 голосов
/ 21 января 2009

Я не думаю, что они злые. Удаление элемента управления в форме - это просто еще один способ сказать «новый поток ()» или «новый таймер ()», который многие программисты на самом деле не понимают.

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

Однако, если использование перетаскивания - это только способ, которым программист знает, как это делать, это не очень хороший программист.

4 голосов
/ 21 января 2009

Я думаю, что они вредят программистам. Перетаскивание не программирование.

Возможно, я рисую широкой кистью, но я нахожу шокирующим, что большинство разработчиков веб-приложений (особенно разработчиков .NET WebForm), с которыми я сталкивался, испытывают полное отсутствие знаний, когда речь заходит о модели HTTP, базовые вещи, такие поскольку POST и GET вышли из-под контроля из-за абстракций, с которыми они столкнулись.

Эта статья - очень интересное чтение и полностью отражает мои чувства.

3 голосов
/ 21 января 2009

Лично у меня не было причин использовать многопоточное программирование в моей рабочей карьере, хотя я учился в колледже. Таким образом, элемент управления Timer мне очень помог, особенно , потому что Мне было все равно, чтобы научиться выполнять многопоточное программирование в .NET только для того, чтобы получить простую функциональность.

2 голосов
/ 21 января 2009

BackgroundWorker добавляет реальную ценность. Он производит намного более чистый код (с помощью модели событий), чем выполнение потоков вручную с помощью вызовов делегатов, а затем Control.Invoke для перенаправления результата обратно в поток пользовательского интерфейса.

Я был сожжен при тестировании на Control.InvokeRequired без тестирования на Control.IsHandleCreated. Control.InvokeRequired будет возвращать значение false, когда код уже выполняется в потоке пользовательского интерфейса, а также, если элемент управления не существует. Если бы я использовал BackgroudWorker, у меня, вероятно, не было бы этой проблемы.

2 голосов
/ 21 января 2009

«Drag 'n Drop», означающее использование WYSIWYG-частей IDE?

Я вырос, работая над VB6 и кодом Dreamweaver, поэтому я использую "очень да" , если это так.

1 голос
/ 21 января 2009

(Из тега .Net этого вопроса я предполагаю, что мы говорим о дизайнерах Visual Studio, когда говорим о перетаскивании элементов управления.)

Я не думаю, что они злые, хотя я согласен, что это не всегда самая подходящая метафора для компонентов (таких как Thread).

Перетаскивание элемента управления не является для меня заявлением о том, что «это компонент пользовательского интерфейса, который далек от металла». Скорее, это утверждение, что я «хочу, чтобы дизайнер управлял временем жизни этого компонента для меня». С этой точки зрения очень разумно добавлять такие вещи, как фоновые рабочие, с помощью перетаскивания. Фактически, это мой любимый метод для включения любого IDisposable объекта в качестве члена (например, UserControl или Form). Таким образом, кодовый код обрабатывается для меня, и я могу сосредоточиться на том, что мой код делает в отличие от проводки.

0 голосов
/ 21 января 2009

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

И это прежде, чем мы обсудим ошибки в конструкторе, которые, например, удаляют все события ...

0 голосов
/ 21 января 2009

Это метафора UI.

То, что вы перетаскиваете, должно быть «чем-то», файлом, документом или чем-то другим, в «что-то», контейнером, корзиной, шредером, принтером и т.

Перетаскивание потока / задачи в таймер теряет основную метафору и ощущается неправильно.

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

0 голосов
/ 21 января 2009

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

Так что для быстрого способа начать работу, это не повредит; но если использовать его как единственный способ сделать многопоточность, то это определенно вредит программистам.

...