Чи графічно графічний інтерфейс слід вважати «обманом»?


18

У мене є друг, який має трохи більший обсяг досвіду програмування, як я. Ми говорили про всі різні технології програмування, які ми використовуємо, і Interface Builder піднявся на розмову.

Не маючи жодного досвіду програмування, окрім того, чого я сам навчив, я особисто вважаю, що IB та всі його функції ( IBOutlets, IBActions) допомагають кодерам мого рівня майстерності (і всіх рівнів майстерності, з цього приводу) закінчувати свої проекти за менший час.

Його погляд на ІБ трохи захоплений. Він вважає, що кодери, що використовують програму Interface Builder, "обманюють" у тому, що їм не потрібно розкладати інтерфейси вручну.


Питання:

Чи слід використовувати конструктор графічного інтерфейсу для викладення елементів інтерфейсу як «обман» (оскільки більшість програмувань спочатку вимагала прокладання інтерфейсів вручну в коді)? Чому?


32
Навіщо гавкати, коли ти можеш придбати собаку, щоб зробити це за тебе?
jfrankcarr

29
Використання пікапа - це обман. Справжні чоловіки випередили і приручили диких коней за погоди 120 градусів. Вони підходять до них зі спини. Обов’язковий xkcd.com/378
робота

9
запитайте свого друга, чому він не вважає за допомогою комп'ютера замість того, щоб робити вручну обман як обман
DPD

2
Здається, що твій друг ніколи не мав агресивного строку зустрічі.
MattDavey

15
Вважаючи це обманом - це просто снобізм програміста.
Алан Б

Відповіді:


60

Це не обман. Такі програми, як ІБ - це інструменти. Використовуйте правильну для роботи. Немає потреби догматично з цього приводу.

Якщо ви ефективніше використовуєте такий інструмент, використовуйте його. Єдине застереження полягає в тому, що ви повинні дізнатися про компроміси, приймаючи свої рішення. Робота макетів вручну дає точний контроль за рахунок легкості перетягування. Інструменти перетягування дозволяють робити багато речей швидко і легко, але можуть ускладнити збереження коду з часом.

Особисто я ніколи не мав успіху і не отримував великого задоволення від використання інструмента розробки інтерфейсу перетягування, але це тільки я. Я вважаю, що розміщення графічних інтерфейсів вручну є найбільш ефективним для мене і дає базу коду, яку легше підтримувати з часом. Інші мають протилежний досвід.


3
Додамо лише, що інструменти дизайнера - це лише генератори коду. Створення коду, як правило, є хорошою справою, тому що він може генерувати його, і ви можете продовжувати робити те, що ви мали намір робити; змусити екран насправді зробити щось корисне. Мій досвід відрізняється; Я набагато продуктивніше використовував інструменти дизайнера, ніж ні.
Енді

Як доповнення до замітки Енді, правильний інструмент дизайнера вносить усі зміни у світі. Я використовував Delphi / Lazarus для розвитку GUI, і це було чудово. Я також мав право використовувати MS Frontpage, і ви отримуєте жахливий HTML з іншого кінця.
Спенсер Ратбун

FWIW, використовуючи MFC, я використовую візуальний редактор, щоб наблизити його, а потім відрегулювати вручну, щоб його правильно. Це здається для мене найшвидшим способом.
Девід Торнлі

У мене немає проблем із використанням спеціалізованого інструмента, щоб швидше виконати роботу, але додати: Моя власна перевага - це інструменти, що визначають моделі, керовані даними, тобто макет інтерфейсу в XML, а не генератори коду, написати для вас "Кнопка btn54 = нова кнопка (x: 543, y: 782);"
Katana314

17

Програмування як робота - це не спорт і не гра. Тож аргумент обману дуже тонкий. Якщо візуальні інструменти підвищують вашу продуктивність, вам було б дурно не використовувати їх. Мій досвід полягає в тому, що вони змушують мене витрачати більше часу на фактичний код вирішення проблем, не роблячи дрібниці інтерфейсу знову і знову.

Але будьте обережні, налаштування чи дані пробираються в інтерфейс досить просто. Будьте радикальні щодо збереження презентації та логіки відокремленими.


10

Це лише обман, якщо ти щось жертвуєш, щоб потрапити туди. Більшість макетів графічного інтерфейсу просто генерують код, який ви все одно зробите (і часто доводиться редагувати вручну, оскільки макет недостатній).

Так в основному, ні.

За умови рівності, будь-який інструмент, який дозволяє швидше зробити те ж саме, добре.


Я твердо перебуваю в таборі "використовувати доступні інструменти для компонування". Інструменти економлять час, хоча генерований код часто потребує певного налаштування. Хлопець "це обман" звучить як хтось, хто не знайшов час, щоб зрозуміти створене досить добре, щоб його відредагувати.
Джим у Техасі

4

Обман - це назва гри. Ви завжди повинні приймати найпростіший маршрут, який ви можете, приймаючи будь-яке рішення щодо розвитку. Називайте це обманом, називайте його "продуктивним"; це не має значення. Вам слід вибрати інструмент, який допоможе вам виконати роботу з найменшими зусиллями (звичайно, не забувайте про технічне обслуговування та масштабованість).

Тепер конкретно з IB, ви повинні зважити час, який заощаджує IB, порівняно з витратами на підтримання коду, який є більш неохайним і з яким ви менш знайомі. Це дійсно в кожному конкретному випадку і від конкретної людини. У багатьох випадках інструменти та майстри дозволяють вам зробити набагато більше роботи з низькими додатковими витратами на технічне обслуговування ... а іноді вони вводять шахрайський код і більш пропускну абстракцію, ніж ви знаєте, що робити. Здається, ви самі вирішили, що IB коштує будь-яких витрат, що додає їх розвитку, проте ваш друг може так само легко виявити, що інструмент заважає йому більше, ніж допомагає.


3

Ніяк ні. Однак це робити цілком вручну - це явний випадок зробити непотрібну роботу для себе.

(Як правило, я викладаю це за допомогою будівельника, і якщо потрібна якась налагодження, це, як правило, - але не завжди - робиться вручну).


У .Net, як і у версії 2.0, я вважаю, що графічний інтерфейс та логіка є окремими завдяки частковим класам - той самий клас визначений у двох різних файлах; один повністю генерується автоматично, а інший - налаштований вами.
Робота

Я не можу погодитися з твердженням, що це "явний випадок непотрібної роботи". Все залежить від інструменту та майстерності програміста. Наприклад, я впевнений, що міг би скопіювати графічний інтерфейс tcl / tk швидше і з кращим кінцевим кодом вручну, ніж ви могли використовувати будь-який розробник графічного інтерфейсу за своїм вибором. ОТО, немає жодного способу, щоб я міг би використовувати щось, окрім Visual Studio, щоб створити додаток для настільних ПК .net.
Брайан Оуклі

Оскільки в ОП досить чітко йдеться про загальний випадок (див. Жирний текст у запитанні), я не можу прийняти вашу незгоду щодо загальної справи, хоча я погоджуюся, що окремі випадки можуть і існують. Тим часом колись.
Максим Мінімус

3

Це, звичайно, не обман, хоча я б трохи менше поважав розробника, який не міг викласти графічний інтерфейс без нього. IMO, використовуючи один, не відрізняється від використання наданого системою типу даних - навіщо реалізовувати власний пов'язаний список чи хеш-карту, якщо ви можете використовувати його із системної бібліотеки?

FWIW Мені довелося впровадити інтерфейс в Java Swing пару місяців тому. Я ніколи його не використовував, тому написав це все вручну, щоб я міг краще зрозуміти, як це працює. Тепер, коли я знаю базовий API, я більше ніколи не напишу його вручну, якщо зможу в цьому допомогти!


1

Як стверджує @Bryan Oakley , це просто інструмент, а не "обман". Все залежить від того, що саме ви розкладаєте. Якщо вручну це робить неймовірно трудомісткі вправи, то вам дійсно слід шукати інші альтернативи, які роблять вас більш продуктивними.

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

Останнім часом, використовуючи шаблон MVVM, з відмінністю View і ViewModel, це стає трохи більш зрозумілим, коли ви будете використовувати графічні інструменти. Філ Хаак коротко обговорює це в епізоді підкасту Github for Windows Herding Code, коли його запитують про перехід від веб-розробки до програми. Більш сенс робити ViewModel з кодуванням "вручну", і дозволити дизайнеру побудувати Перегляд графічно (і відповідно підключити ViewModels).


1

Однією з найважливіших переваг таких інструментів, як Interface Builder, є те, що вони дають можливість відокремити роботу з проектування інтерфейсу від реалізації програми. Хтось із мінімальними навичками кодування може легко змінити макет інтерфейсу користувача, змінити кнопки та підписи меню, перекласти інтерфейс користувача на іншу мову тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.