ควรจัดวาง GUI แบบกราฟิกโดยพิจารณาว่าเป็น“ การโกงหรือไม่”


18

ฉันมีเพื่อนที่มีประสบการณ์การเขียนโปรแกรมมากกว่าเล็กน้อย เรากำลังพูดถึงเทคโนโลยีการเขียนโปรแกรมที่แตกต่างกันทั้งหมดที่เราใช้และเครื่องมือสร้างส่วนต่อประสานมาในการสนทนา

ความเป็นอยู่ของพื้นหลังไม่มีการเขียนโปรแกรมยกเว้นสำหรับสิ่งที่ผมเคยสอนตัวเองผมเองเชื่อว่า IB และคุณสมบัติของมัน ( IBOutlets, IBActions) ช่วยเหลือ coders ระดับความสามารถของฉัน (และทุกระดับความสามารถสำหรับเรื่องที่) โครงการที่สมบูรณ์แบบของพวกเขาในเวลาที่น้อยลง

มุมมองของเขาเกี่ยวกับ IB นั้นค่อนข้างกระตือรือร้น เขาเชื่อว่าตัวแปลงสัญญาณที่ใช้ตัวสร้างส่วนต่อประสานนั้นเป็น "การโกง" ในความจริงที่ว่าพวกเขาไม่จำเป็นต้องจัดวางอินเทอร์เฟซด้วยตนเอง


คำถาม:

ควรใช้ตัวสร้าง GUI เพื่อจัดวางองค์ประกอบอินเทอร์เฟซควรถูกพิจารณาว่า "โกง" (เนื่องจากการเขียนโปรแกรมส่วนใหญ่จำเป็นต้องมีการวางอินเตอร์เฟสด้วยมือในโค้ด)? ทำไม?


32
ทำไมเห่าเมื่อคุณสามารถซื้อสุนัขเพื่อทำเพื่อคุณ
jfrankcarr

29
การใช้รถปิคอัพกำลังโกง ผู้ชายที่แท้จริงวิ่งเร็วกว่าและเชื่องม้าป่าในสภาพอากาศ 120 องศา พวกเขาเข้าหาพวกเขาจากด้านหลัง บังคับxkcd.com/378
งาน

9
ถามเพื่อนของคุณว่าทำไมเขาถึงไม่พิจารณาใช้คอมพิวเตอร์แทนการทำสิ่งต่าง ๆ ด้วยตนเองแบบโกง
DPD

2
เสียงเหมือนเพื่อนของคุณไม่เคยมีวันครบกำหนดก้าวร้าวมาพบ
MattDavey

15
เมื่อพิจารณาว่าการโกงเป็นเพียงแค่นักเขียนโปรแกรมหัวสูง
Alan B

คำตอบ:


60

มันไม่ได้โกง โปรแกรมอย่าง IB เป็นเครื่องมือ ใช้สิ่งที่ถูกต้องสำหรับงาน ไม่จำเป็นต้องมีความเชื่อมั่นเกี่ยวกับเรื่องนี้

หากคุณมีประสิทธิภาพมากขึ้นโดยใช้เครื่องมือดังกล่าวให้ใช้มัน ข้อแม้เดียวคือคุณควรเรียนรู้การแลกเปลี่ยนเมื่อตัดสินใจ การจัดเลย์เอาต์ด้วยมือช่วยให้คุณควบคุมได้อย่างแม่นยำด้วยการลากและวางที่ง่ายดาย เครื่องมือลากแล้วปล่อยให้คุณทำสิ่งต่าง ๆ ได้อย่างรวดเร็วและง่ายดาย แต่อาจทำให้โค้ดของคุณยากขึ้นเมื่อเวลาผ่านไป

โดยส่วนตัวฉันไม่เคยประสบความสำเร็จหรือได้รับความพึงพอใจอย่างมากจากการใช้เครื่องมือออกแบบ UI แบบลากและวาง แต่นั่นเป็นเพียงฉัน ฉันพบว่าการวาง GUIs ด้วยมือเป็นวิธีที่มีประสิทธิภาพที่สุดสำหรับฉันและทำให้ได้รับรหัสฐานที่ง่ายต่อการบำรุงรักษาเมื่อเวลาผ่านไป คนอื่นมีประสบการณ์ตรงกันข้าม


3
เพียงเพิ่มเครื่องมือออกแบบเป็นเพียงเครื่องกำเนิดรหัส การสร้างรหัสมักจะเป็นสิ่งที่ดีเพราะมันสามารถสร้างมันขึ้นมาและคุณสามารถทำสิ่งที่คุณตั้งใจจะทำ ทำให้หน้าจอทำสิ่งที่มีประโยชน์จริง ๆ ประสบการณ์ของฉันแตกต่างกัน ฉันทำงานได้มากขึ้นโดยใช้เครื่องมือของนักออกแบบมากกว่าไม่
Andy

ในฐานะที่เป็นภาคผนวกของบันทึกย่อของ Andy เครื่องมือออกแบบที่เหมาะสมสร้างความแตกต่างในโลก ฉันใช้ Delphi / Lazarus เพื่อการพัฒนา GUI และมันยอดเยี่ยมมาก ฉันยังได้รับคำสั่งให้ใช้ MS Frontpage และคุณจะได้ HTML ที่น่ากลัวออกมาอีกด้าน
Spencer Rathbun

FWIW โดยใช้ MFC ฉันใช้โปรแกรมแก้ไขภาพเพื่อปิดมันจากนั้นปรับมือเพื่อให้ถูกต้อง นั่นดูเหมือนจะเป็นวิธีที่เร็วที่สุดสำหรับฉัน
David Thornley

ฉันไม่มีปัญหากับการใช้เครื่องมือพิเศษเพื่อให้งานเสร็จเร็วขึ้น แต่เพื่อเพิ่มใน: การตั้งค่าของฉันเองสำหรับเครื่องมือที่กำหนดโมเดลที่ขับเคลื่อนด้วยข้อมูลเช่นโครงร่าง UI ใน XML - แทนที่จะเป็นตัวสร้างโค้ดที่จะ เขียนสำหรับคุณ "ปุ่ม btn54 = ปุ่มใหม่ (x: 543, y: 782);"
Katana314

17

การเขียนโปรแกรมเป็นงานไม่ใช่กีฬาหรือเกม ข้อโต้แย้งการโกงจึงผอมมาก หากเครื่องมือแสดงผลช่วยเพิ่มประสิทธิผลของคุณคุณจะโง่ที่จะไม่ใช้มัน ประสบการณ์ของฉันคือสิ่งเหล่านี้ทำให้ฉันได้ใช้เวลามากขึ้นในการแก้ปัญหารหัสจริงโดยไม่ต้องทำสิ่งเล็กน้อยบนอินเทอร์เฟซซ้ำแล้วซ้ำอีก

แต่ระวังให้ง่ายสำหรับการตั้งค่าหรือข้อมูลที่จะคืบเข้าไปในอินเทอร์เฟซ เป็นคนหัวรุนแรงเกี่ยวกับการนำเสนอและตรรกะแยก


10

มันเป็นแค่การโกงถ้าคุณยอมสละบางสิ่งบางอย่างเพื่อไปที่นั่น เลย์เอาต์ GUI ส่วนใหญ่สร้างโค้ดที่คุณต้องการทำต่อไป (และมักจะต้องแก้ไขด้วยมือเนื่องจากเลย์เอาต์นั้นไม่เพียงพอ)

ดังนั้นโดยทั่วไปแล้ว

ทุกอย่างเท่าเทียมกันเครื่องมือใด ๆ ที่ช่วยให้คุณทำสิ่งเดียวกันเสร็จเร็วขึ้นนั้นดี


ฉันมั่นในค่าย 'ใช้เครื่องมือรูปแบบที่มีอยู่' เครื่องมือประหยัดเวลาแม้ว่ารหัสที่สร้างขึ้นมักจะต้องมีการปรับแต่ง คนที่แต่งตัวประหลาด 'การโกง' ดูเหมือนคนที่ไม่ได้ใช้เวลาในการทำความเข้าใจสิ่งที่สร้างขึ้นให้ดีพอที่จะแก้ไขได้
Jim ในเท็กซัส

4

การโกงเป็นชื่อของเกม คุณควรใช้เส้นทางที่ง่ายที่สุดที่คุณสามารถตัดสินใจได้ทุกเมื่อ เรียกว่าการโกงเรียกมันว่า "กำลังประสิทธิผล"; มันทำให้ไม่มีความแตกต่าง คุณควรเลือกเครื่องมือที่ช่วยให้คุณทำงานได้สำเร็จโดยใช้ความพยายามน้อยที่สุด (แน่นอนอย่าลืมเกี่ยวกับการบำรุงรักษาและความสามารถในการปรับขยาย)

ตอนนี้โดยเฉพาะกับ IB คุณควรชั่งน้ำหนักเวลาที่ประหยัดโดย IB เทียบกับค่าใช้จ่ายในการบำรุงรักษาโค้ดที่ไม่เลอะเทอะและไม่คุ้นเคย นี่เป็นกรณีและการตัดสินใจของแต่ละคน ในหลายกรณีเครื่องมือและวิซาร์ดช่วยให้คุณทำงานได้มากขึ้นด้วยค่าบำรุงรักษาที่เพิ่มขึ้นต่ำ ... และบางครั้งพวกเขาแนะนำโค้ดสลาปและสิ่งที่เป็นนามธรรมที่น่าสนใจยิ่งกว่าที่คุณรู้ ดูเหมือนว่าคุณได้ตัดสินใจด้วยตัวเองแล้วว่า IB มีค่าใช้จ่ายใด ๆ ที่จะเพิ่มในการพัฒนาอย่างไรก็ตามเพื่อนของคุณอาจพบว่าเครื่องมือนี้เป็นอุปสรรคต่อเขามากกว่าที่จะช่วยได้


3

ไม่มีทาง. อย่างไรก็ตามการทำด้วยมือทั้งหมดเป็นกรณีที่ชัดเจนในการทำงานที่ไม่จำเป็นสำหรับตัวคุณเอง

(โดยทั่วไปฉันจะจัดทำโดยใช้เครื่องมือสร้างและหากจำเป็นต้องปรับแต่งใด ๆ ก็มีแนวโน้มที่จะ - แต่ไม่เสมอไป - ทำด้วยมือ)


ใน. Net ณ เวอร์ชัน 2.0 ฉันเชื่อว่า GUI และตรรกะแยกจากกันเนื่องจากคลาสบางส่วน - คลาสเดียวกันถูกกำหนดในไฟล์ที่แตกต่างกันสองไฟล์ หนึ่งคือสร้างขึ้นโดยอัตโนมัติทั้งหมดและหนึ่งที่กำหนดเองโดยคุณ
งาน

ฉันไม่เห็นด้วยกับข้อความที่ว่า "เป็นกรณีที่ชัดเจนในการทำงานที่ไม่จำเป็น" ทุกอย่างขึ้นอยู่กับเครื่องมือและความสามารถของโปรแกรมเมอร์ ตัวอย่างเช่นฉันมั่นใจว่าฉันสามารถใช้รหัส tcl / tk GUI ได้เร็วขึ้นและด้วยรหัสสุดท้ายที่ดีกว่าด้วยมือกว่าที่คุณสามารถใช้ตัวสร้าง GUI ที่คุณต้องการ OTOH ไม่มีทางที่ฉันจะพิจารณาใช้สิ่งอื่นนอกเหนือจาก Visual Studio หากสร้างแอป. net บนเดสก์ท็อป
ไบรอัน Oakley

เนื่องจาก OP ค่อนข้างชัดเจนเกี่ยวกับกรณีทั่วไป (ดูข้อความที่เป็นตัวหนาในคำถาม) ฉันไม่สามารถยอมรับความขัดแย้งของคุณเกี่ยวกับกรณีทั่วไปได้แม้ว่าฉันยอมรับกรณีพิเศษที่สามารถทำได้ Twas เลยทีเดียว
Maximus Minimus

3

แน่นอนว่าไม่ได้นอกใจแม้ว่าฉันจะมีความเคารพน้อยลงสำหรับนักพัฒนาที่ ไม่สามารถจัดวาง GUI ได้หากไม่มีใคร IMO การใช้อย่างใดอย่างหนึ่งไม่แตกต่างจากการใช้ประเภทข้อมูลที่ระบบจัดไว้ให้ - ทำไมต้องใช้ลิสต์ที่เชื่อมโยงหรือแมปแฮชถ้าคุณสามารถใช้ไลบรารี่หนึ่งระบบ

FWIW ฉันต้องใช้ UI ใน Java Swing สองสามเดือนที่ผ่านมา ฉันไม่เคยใช้มันดังนั้นฉันจึงเขียนมันทั้งหมดด้วยมือเพื่อให้ฉันสามารถเข้าใจถึงวิธีการทำงานได้ดีขึ้น ตอนนี้ฉันรู้ API พื้นฐานแล้วฉันจะไม่เขียนทีละมือถ้าฉันสามารถช่วยได้!


1

ในฐานะที่เป็น@Bryan Oakleyรัฐเป็นเพียงเครื่องมือและไม่ได้เป็น "โกง" ทุกอย่างขึ้นอยู่กับสิ่งที่คุณกำลังวางแผน ถ้าด้วยมือทำให้มันออกกำลังกายอย่างไม่น่าเชื่อคุณควรมองหาทางเลือกอื่นที่ทำให้คุณมีประสิทธิผลมากขึ้น

ฉันเคยอยู่ในค่ายของมือเขียนรหัสอินเตอร์เฟส แต่หลังจากการแข่งขันของการวางอินเทอร์เฟซฉันเอาลูกศรไปที่หัวเข่าและมีความคิดเห็นที่แตกต่างกัน ถ้าฉันสามารถและทำให้ฉันมีประสิทธิผลมากขึ้นฉันจะใช้เครื่องมือกราฟิกเพื่อจัดวาง GUI

เมื่อเร็ว ๆ นี้การใช้รูปแบบ MVVM ด้วยความแตกต่างของมุมมองและ ViewModel มันทำให้ชัดเจนมากขึ้นเมื่อคุณจะใช้เครื่องมือกราฟิก Phil Haack กล่าวถึงเรื่องนี้สั้น ๆ ในตอนGithub สำหรับ Windows ของพอดคาสต์รหัส Herdingเมื่อถูกถามเกี่ยวกับการเปลี่ยนจากเว็บเป็นการพัฒนาแอพพลิเคชั่น มันสมเหตุสมผลมากกว่าที่จะทำ ViewModel ด้วยการเข้ารหัส "ด้วยมือ" และให้ผู้ออกแบบสร้างมุมมองแบบกราฟิก (และวางสาย ViewModels ตามลำดับ)


1

หนึ่งในข้อดีที่ยอดเยี่ยมของเครื่องมือเช่นตัวสร้างส่วนติดต่อคือพวกเขาทำให้สามารถแยกการทำงานของการออกแบบ UI ออกจากการใช้งานโปรแกรม คนที่มีทักษะการเขียนรหัสน้อยที่สุดสามารถเปลี่ยนเค้าโครงของ UI เปลี่ยนปุ่มและคำอธิบายภาพเมนูแปล UI เป็นภาษาอื่นได้อย่างง่ายดาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.