Haruskah meletakkan GUI secara grafis dianggap "curang?"

18

Saya memiliki teman yang memiliki pengalaman pemrograman sedikit lebih besar daripada saya. Kami berbicara tentang semua teknologi pemrograman yang berbeda yang kami gunakan dan Interface Builder muncul dalam percakapan.

Karena tidak memiliki latar belakang pemrograman kecuali untuk apa yang telah saya pelajari sendiri, saya pribadi percaya bahwa IB dan semua fiturnya ( IBOutlets, IBActions) membantu pembuat kode tingkat keterampilan saya (dan semua tingkat keterampilan, dalam hal ini) menyelesaikan proyek mereka dalam waktu yang lebih singkat.

Pandangannya tentang IB sedikit antusias. Dia percaya bahwa pembuat kode yang menggunakan Interface Builder "curang" dalam kenyataan bahwa mereka tidak perlu membuat antarmuka dengan tangan.


Pertanyaan:

Haruskah menggunakan pembangun GUI untuk meletakkan elemen antarmuka dianggap "curang" (karena sebagian besar pemrograman awalnya diperlukan membuat antarmuka dengan tangan dalam kode)? Mengapa?

esqew
sumber
32
Mengapa menggonggong ketika Anda bisa membeli anjing untuk melakukannya untuk Anda?
jfrankcarr
29
Menggunakan truk pickup itu curang. Pria sejati berlari lebih cepat dan menjinakkan kuda liar dalam cuaca 120 derajat. Mereka mendekati mereka dari belakang. Wajib xkcd.com/378
Ayub
9
tanyakan kepada teman Anda mengapa dia tidak menganggap menggunakan komputer daripada melakukan hal-hal secara manual sebagai curang
DPD
2
Sepertinya teman Anda tidak pernah memiliki tenggat waktu yang agresif untuk dipenuhi.
MattDavey
15
Mengingat itu curang hanyalah programmer keangkuhan.
Alan B

Jawaban:

60

Itu tidak curang. Program seperti IB adalah alat. Gunakan yang tepat untuk pekerjaan itu. Tidak perlu menjadi dogmatis tentang hal itu.

Jika Anda lebih efektif menggunakan alat seperti itu, gunakan itu. Satu-satunya peringatan adalah bahwa Anda harus mempelajari pertukaran ketika membuat keputusan. Melakukan tata letak dengan tangan memberi Anda kontrol tepat dengan mengorbankan kemudahan seret-dan-jatuhkan. Alat seret-dan-jatuhkan memungkinkan Anda melakukan banyak hal dengan cepat dan mudah, tetapi mungkin membuat kode Anda lebih sulit dipertahankan seiring waktu.

Secara pribadi, saya tidak pernah sukses atau mendapatkan banyak kesenangan dari menggunakan alat desain UI drag and drop, tapi itu hanya saya. Saya menemukan meletakkan GUI dengan tangan adalah yang paling efektif bagi saya , dan menghasilkan basis kode yang lebih mudah dipertahankan dari waktu ke waktu. Yang lain memiliki pengalaman sebaliknya.

Bryan Oakley
sumber
3
Sebagai tambahan, alat perancang hanyalah pembuat kode. Membuat kode biasanya merupakan hal yang baik, karena dapat menghasilkannya dan Anda dapat melanjutkan melakukan apa yang seharusnya Anda lakukan; membuat layar benar-benar melakukan sesuatu yang bermanfaat. Pengalaman saya berbeda; Saya jauh lebih produktif menggunakan alat desainer daripada tidak.
Andy
Sebagai tambahan pada catatan Andy, alat desainer yang tepat membuat semua perbedaan di dunia. Saya telah menggunakan Delphi / Lazarus untuk pengembangan GUI dan itu hebat. Saya juga telah diberi mandat untuk menggunakan MS Frontpage, dan Anda mendapatkan html mengerikan dari ujung lainnya.
Spencer Rathbun
FWIW, menggunakan MFC saya menggunakan editor visual untuk mendekat, kemudian menyesuaikan tangan untuk memperbaikinya. Itu sepertinya menjadi cara tercepat bagi saya.
David Thornley
Saya tidak punya masalah dengan menggunakan alat khusus untuk menyelesaikan pekerjaan lebih cepat, tetapi untuk menambahkan: Preferensi saya sendiri adalah untuk alat yang mendefinisikan model yang didorong data, yaitu tata letak UI dalam XML - daripada pembuat kode, yang akan tulis untuk Anda "Tombol btn54 = Tombol baru (x: 543, y: 782);"
Katana314
17

Pemrograman sebagai pekerjaan bukanlah olahraga atau permainan. Jadi argumen curang itu sangat tipis. Jika alat visual meningkatkan produktivitas Anda, Anda akan bodoh untuk tidak menggunakannya. Pengalaman saya adalah ini membuat saya menghabiskan lebih banyak waktu pada kode pemecahan masalah yang sebenarnya tanpa melakukan hal-hal antarmuka sepele berulang kali.

Namun berhati-hatilah, mudah untuk pengaturan atau data masuk ke antarmuka. Jadilah radikal tentang menjaga presentasi dan logika terpisah.

Pieter B
sumber
10

Itu hanya curang jika Anda mengorbankan sesuatu untuk sampai ke sana. Sebagian besar tata letak GUI hanya menghasilkan kode yang ingin Anda buat (dan seringkali harus diedit dengan tangan karena tata letak tidak mencukupi).

Jadi pada dasarnya, tidak.

Semuanya sama, alat apa pun yang memungkinkan Anda menyelesaikan hal yang sama lebih cepat adalah baik.

Telastyn
sumber
Saya tegas di kamp 'gunakan alat tata letak yang tersedia'. Alat ini menghemat waktu, meskipun kode yang dihasilkan sering membutuhkan penyesuaian. Cowok 'itu curang' terdengar seperti seseorang yang belum meluangkan waktu untuk memahami yang dihasilkan dengan cukup baik untuk mengeditnya.
Jim In Texas
4

Selingkuh adalah nama permainannya. Anda harus selalu mengambil rute termudah yang Anda bisa saat membuat keputusan pengembangan apa pun. Sebut itu curang, sebut saja "menjadi produktif"; tidak ada bedanya. Anda harus memilih alat yang membantu Anda menyelesaikan pekerjaan dengan jumlah usaha paling sedikit (tentu saja, jangan lupa tentang pemeliharaan dan skalabilitas).

Sekarang khusus dengan IB, Anda harus mempertimbangkan waktu yang dihemat oleh IB vs biaya karena harus mempertahankan kode yang lebih ceroboh dan yang kurang Anda kenal. Ini benar-benar kasus per kasus dan orang dengan jenis keputusan. Dalam banyak kasus, alat dan penyihir memungkinkan Anda menyelesaikan lebih banyak pekerjaan dengan biaya perawatan tambahan yang rendah ... dan kadang-kadang mereka memperkenalkan kode slop dan abstraksi yang lebih bocor daripada yang Anda tahu harus dilakukan dengan apa. Sepertinya Anda telah membuat keputusan untuk diri Anda sendiri bahwa IB bernilai biaya apa pun yang ditambahkannya untuk pengembangan, namun, teman Anda mungkin akan dengan mudah menemukan bahwa alat tersebut menghalangi dia lebih daripada membantu.

Morgan Herlocker
sumber
3

Tidak. Namun, melakukannya sepenuhnya dengan tangan, adalah kasus yang jelas untuk membuat pekerjaan yang tidak perlu untuk Anda sendiri.

(Umumnya saya akan meletakkannya menggunakan pembangun dan jika ada fine-tuning diperlukan itu cenderung - tetapi tidak selalu - dilakukan dengan tangan).

Maximus Minimus
sumber
Dalam. Net pada versi 2.0 saya percaya GUI dan logika terpisah berkat kelas parsial - kelas yang sama didefinisikan dalam dua file berbeda; satu sepenuhnya dihasilkan secara otomatis, dan satu dikustomisasi oleh Anda.
Pekerjaan
Saya tidak bisa setuju dengan pernyataan bahwa itu adalah "kasus yang jelas untuk membuat pekerjaan yang tidak perlu". Itu semua tergantung pada alat dan keterampilan programmer. Sebagai contoh, saya yakin saya bisa mengkode tUI / GUI tcl / tk lebih cepat dan dengan kode final yang lebih baik dengan tangan daripada Anda bisa menggunakan pembangun GUI pilihan Anda. OTOH, tidak ada cara saya akan mempertimbangkan menggunakan apa pun selain Visual Studio jika membuat aplikasi desktop .net.
Bryan Oakley
Karena OP cukup jelas berbicara tentang kasus umum (lihat teks tebal dalam pertanyaan), saya tidak dapat menerima ketidaksetujuan Anda mengenai kasus umum, meskipun saya menerima bahwa kasus khusus dapat dan memang ada. Sungguh pun demikian.
Maximus Minimus
3

Ini tentu saja tidak curang, meskipun saya akan sedikit kurang menghormati pengembang yang tidak bisa mengeluarkan GUI tanpa itu. IMO, menggunakan satu tidak berbeda dengan menggunakan tipe data yang disediakan sistem - mengapa menerapkan daftar tautan atau hash Anda sendiri jika Anda dapat menggunakan satu dari perpustakaan sistem?

FWIW Saya harus mengimplementasikan UI di Java Swing beberapa bulan yang lalu. Saya tidak pernah menggunakannya, jadi saya menulis semuanya dengan tangan sehingga saya bisa mendapatkan pemahaman yang lebih baik tentang cara kerjanya. Sekarang saya tahu API dasar, saya tidak akan pernah menulis satu tangan lagi jika saya bisa membantu!

TMN
sumber
1

Seperti yang dinyatakan oleh @Bryan Oakley , itu hanya alat dan bukan "cheat". Itu semua tergantung pada apa yang Anda jelaskan. Jika dengan tangan membuatnya menjadi latihan yang sangat melelahkan maka Anda harus benar-benar mencari alternatif lain yang membuat Anda lebih produktif.

Dulu saya berada di tangan pengkodean antarmuka, tetapi kemudian setelah serangan antarmuka saya mengambil panah ke lutut dan memiliki pendapat yang berbeda. Jika saya bisa dan itu membuat saya lebih produktif maka saya akan menggunakan alat grafis untuk mengeluarkan GUI.

Baru-baru ini menggunakan pola MVVM, dengan perbedaan View dan ViewModel, itu membuat sedikit lebih jelas ketika Anda akan menggunakan alat grafis. Phil Haack membahas ini secara singkat dalam episode Github untuk Windows dari podcast Herding Code ketika ditanya tentang transisi dari web ke pengembangan aplikasi. Lebih masuk akal untuk melakukan ViewModel dengan pengkodean "dengan tangan", dan biarkan perancang membangun Tampilan secara grafis (dan sesuaikan ViewModels dengan sesuai).

Spoike
sumber
1

Salah satu keuntungan besar dari alat-alat seperti Interface Builder adalah bahwa mereka memungkinkan untuk memisahkan pekerjaan desain UI dari implementasi program. Seseorang dengan keterampilan pengkodean minimal dapat dengan mudah mengubah tata letak UI, mengubah tombol dan keterangan menu, menerjemahkan UI ke bahasa yang berbeda, dll.

Mark Bessey
sumber