Có nên đặt GUI một cách đồ họa được coi là gian lận không?


18

Tôi có một người bạn có lượng kinh nghiệm lập trình lớn hơn tôi một chút. Chúng tôi đã nói về tất cả các công nghệ lập trình khác nhau mà chúng tôi sử dụng và Interface Builder xuất hiện trong cuộc trò chuyện.

Không có nền tảng lập trình ngoại trừ những gì tôi đã dạy cho bản thân mình, cá nhân tôi tin rằng IB và tất cả các tính năng ( IBOutlets, IBActions) giúp các lập trình viên về trình độ kỹ năng của tôi (và tất cả các cấp độ kỹ năng, trong vấn đề đó) hoàn thành các dự án của họ trong thời gian ngắn hơn.

Quan điểm của anh ấy về IB là một chút nhiệt tình. Ông tin rằng các lập trình viên sử dụng Trình tạo giao diện là "gian lận" trong thực tế là họ không phải bố trí giao diện bằng tay.


Câu hỏi:

Có nên sử dụng trình xây dựng GUI để bố trí các thành phần giao diện được coi là "gian lận" (vì hầu hết các chương trình ban đầu đều yêu cầu đặt giao diện bằng mã)? Tại sao?


32
Tại sao sủa khi bạn có thể mua một con chó để làm điều đó cho bạn?
jfrankcarr

29
Sử dụng xe bán tải là gian lận. Đàn ông đích thực vượt lên và thuần hóa ngựa hoang trong thời tiết 120 độ. Họ tiếp cận họ từ phía sau. Bắt
Công việc

9
hỏi bạn của bạn tại sao anh ta không xem xét việc sử dụng máy tính thay vì làm việc thủ công như gian lận
DPD

2
Âm thanh như bạn của bạn chưa bao giờ có một thời hạn tích cực để đáp ứng.
MattDavey

15
Coi nó gian lận chỉ là lập trình viên hợm hĩnh.
Alan B

Câu trả lời:


60

Đó không phải là gian lận. Các chương trình như IB là công cụ. Sử dụng đúng cho công việc. Không cần phải có giáo điều về nó.

Nếu bạn hiệu quả hơn khi sử dụng một công cụ như vậy, hãy sử dụng nó. Nhắc nhở duy nhất là bạn nên tìm hiểu sự đánh đổi khi đưa ra quyết định của mình. Thực hiện bố trí bằng tay cung cấp cho bạn quyền kiểm soát chính xác với chi phí dễ dàng kéo và thả. Các công cụ kéo và thả cho phép bạn thực hiện nhiều việc nhanh chóng và dễ dàng, nhưng có thể khiến mã của bạn khó duy trì hơn theo thời gian.

Cá nhân tôi chưa bao giờ thành công hay đạt được nhiều niềm vui từ việc sử dụng công cụ thiết kế UI kéo và thả, nhưng đó chỉ là tôi. Tôi thấy việc đặt GUI bằng tay là hiệu quả nhất đối với tôi và mang lại một cơ sở mã dễ duy trì hơn theo thời gian. Những người khác có kinh nghiệm ngược lại.


3
Chỉ cần thêm, các công cụ thiết kế chỉ là trình tạo mã. Tạo mã thường là một điều tốt, bởi vì nó có thể tạo ra nó và bạn có thể tiếp tục làm những gì bạn muốn làm; làm cho màn hình thực sự làm một cái gì đó hữu ích. Kinh nghiệm của tôi khác nhau; Tôi đã làm việc hiệu quả hơn bằng cách sử dụng các công cụ thiết kế hơn là không.
Andy

Là một phụ lục cho ghi chú của Andy, công cụ thiết kế phù hợp tạo ra tất cả sự khác biệt trên thế giới. Tôi đã sử dụng Delphi / Lazarus để phát triển GUI và nó thật tuyệt. Tôi cũng đã được ủy quyền sử dụng MS Frontpage và bạn nhận được html khủng khiếp ở đầu kia.
Spencer Rathbun

FWIW, sử dụng MFC Tôi sử dụng trình chỉnh sửa trực quan để đóng lại, sau đó điều chỉnh bằng tay để làm cho đúng. Đó dường như là cách nhanh nhất đối với tôi.
David Thornley

Tôi không có vấn đề gì với việc sử dụng một công cụ chuyên dụng để hoàn thành công việc nhanh hơn, nhưng để thêm vào: Sở thích của tôi là dành cho các công cụ xác định mô hình dựa trên dữ liệu, tức là bố cục UI'a trong XML - chứ không phải là trình tạo mã, sẽ viết cho bạn "Nút btn54 = Nút mới (x: 543, y: 782);"
Katana314

17

Lập trình như một công việc không phải là một môn thể thao cũng không phải là một trò chơi. Vì vậy, tranh luận gian lận là rất mỏng. Nếu các công cụ trực quan tăng năng suất của bạn, bạn sẽ thật ngu ngốc khi không sử dụng chúng. Kinh nghiệm của tôi là những điều này khiến tôi dành nhiều thời gian hơn cho mã giải quyết vấn đề thực tế mà không phải thực hiện các công cụ giao diện tầm thường nhiều lần.

Hãy cẩn thận, thật dễ dàng để cài đặt hoặc dữ liệu len vào giao diện. Hãy triệt để về việc giữ cho trình bày và logic tách biệt.


10

Nó chỉ gian lận nếu bạn hy sinh thứ gì đó để đến đó. Hầu hết các bố cục GUI chỉ tạo mã mà bạn thực hiện bằng mọi cách (và thường phải chỉnh sửa bằng tay vì bố cục không đủ).

Về cơ bản, không.

Tất cả những thứ khác đều bằng nhau, bất kỳ công cụ nào cho phép bạn hoàn thành công việc tương tự nhanh hơn đều tốt.


Tôi chắc chắn trong trại 'sử dụng các công cụ bố trí có sẵn'. Các công cụ tiết kiệm thời gian, mặc dù mã được tạo thường cần một số điều chỉnh. Anh chàng 'gian lận' nghe có vẻ như là người không dành thời gian để hiểu rõ về thứ được tạo ra đủ để chỉnh sửa nó.
Jim ở Texas

4

Gian lận là tên của trò chơi. Bạn phải luôn luôn đi con đường dễ nhất có thể khi đưa ra bất kỳ loại quyết định phát triển nào. Gọi nó là gian lận, gọi nó là "có năng suất"; Nó không có Gì Thay đổi. Bạn nên chọn công cụ giúp bạn hoàn thành công việc với ít nỗ lực nhất (tất nhiên, đừng quên bảo trì và khả năng mở rộng).

Bây giờ cụ thể với IB, bạn nên cân nhắc thời gian tiết kiệm của IB so với chi phí phải duy trì mã chậm hơn và bạn ít quen thuộc hơn. Đây thực sự là một trường hợp theo từng trường hợp và từng người quyết định. Trong nhiều trường hợp, các công cụ và trình hướng dẫn cho phép bạn hoàn thành công việc nhiều hơn với chi phí bảo trì bổ sung thấp ... và đôi khi chúng giới thiệu mã trượt và trừu tượng hóa nhiều hơn bạn biết phải làm gì. Có vẻ như bạn đã tự đưa ra quyết định rằng IB xứng đáng với bất kỳ chi phí nào mà nó tăng thêm cho sự phát triển, tuy nhiên, bạn của bạn có thể dễ dàng nhận thấy rằng công cụ đó cản trở anh ta nhiều hơn là nó giúp ích.


3

Trời ơi không. Tuy nhiên, làm nó hoàn toàn bằng tay là một trường hợp rõ ràng để tạo ra những công việc không cần thiết cho chính bạn.

(Nói chung tôi sẽ đặt nó ra bằng cách sử dụng trình xây dựng và nếu cần tinh chỉnh thì nó có xu hướng - nhưng không phải lúc nào - được thực hiện bằng tay).


Trong .Net kể từ phiên bản 2.0, tôi tin rằng GUI và logic tách biệt nhờ các lớp một phần - cùng một lớp được định nghĩa trong hai tệp khác nhau; một cái hoàn toàn tự động và một cái được bạn tùy chỉnh.
Công việc

Tôi không thể đồng ý với tuyên bố rằng đó là "trường hợp rõ ràng làm việc không cần thiết". Tất cả phụ thuộc vào công cụ và kỹ năng của lập trình viên. Ví dụ: tôi chắc chắn rằng tôi có thể mã hóa GUI tcl / tk nhanh hơn và với mã cuối cùng tốt hơn bằng tay so với bạn có thể sử dụng bất kỳ trình tạo GUI nào bạn chọn. OTOH, không có cách nào tôi có thể cân nhắc sử dụng bất cứ thứ gì ngoài Visual Studio nếu tạo một ứng dụng máy tính để bàn .net.
Bryan Oakley

Vì OP nói khá rõ về trường hợp chung (xem văn bản in đậm trong câu hỏi) Tôi không thể chấp nhận sự bất đồng của bạn đối với trường hợp chung, mặc dù tôi chấp nhận rằng trường hợp đặc biệt có thể và tồn tại. Twas như vậy bao giờ.
Maximus Minimus

3

Nó chắc chắn không gian lận, mặc dù tôi sẽ có một chút ít tôn trọng đối với một nhà phát triển không thể bố trí GUI mà không có GUI. IMO, sử dụng một cái không khác gì sử dụng kiểu dữ liệu do hệ thống cung cấp - tại sao thực hiện danh sách liên kết hoặc bản đồ băm của riêng bạn nếu bạn có thể sử dụng một trong thư viện hệ thống?

FWIW Tôi đã phải triển khai một giao diện người dùng trong Java Swing vài tháng trước. Tôi chưa bao giờ sử dụng nó, vì vậy tôi đã viết tất cả bằng tay để tôi có thể hiểu rõ hơn về cách thức hoạt động của nó. Bây giờ tôi đã biết API cơ bản, tôi sẽ không bao giờ viết một lần nữa nếu tôi có thể giúp nó!


1

Như @Bryan Oakley tuyên bố, nó chỉ là một công cụ chứ không phải là "gian lận". Tất cả phụ thuộc vào chính xác những gì bạn đang đặt ra. Nếu bằng tay làm cho nó tập thể dục cực kỳ tốn công thì bạn thực sự nên tìm kiếm các lựa chọn thay thế khác làm cho bạn năng suất hơn.

Tôi đã từng ở trong trại tay mã hóa giao diện, nhưng sau đó, sau khi xuất hiện các giao diện, tôi lấy một mũi tên đến đầu gối và có ý kiến ​​khác. Nếu tôi có thể và nó giúp tôi làm việc hiệu quả hơn thì tôi sẽ sử dụng một công cụ đồ họa để bố trí GUI.

Gần đây bằng cách sử dụng mẫu MVVM, với sự khác biệt của View và ViewModel, nó sẽ làm rõ hơn một chút khi bạn sẽ sử dụng các công cụ đồ họa. Phil Haack thảo luận ngắn gọn về điều này trong podcast Github cho Windows của podcast Herding Code khi được hỏi về quá trình chuyển đổi từ web sang phát triển ứng dụng. Sẽ có ý nghĩa hơn khi thực hiện ViewModel với mã hóa "bằng tay" và để nhà thiết kế xây dựng Chế độ xem đồ họa (và kết nối ViewModels tương ứng).


1

Một trong những lợi thế lớn của các công cụ như Interface Builder là chúng giúp phân tách công việc thiết kế UI khỏi việc thực hiện chương trình. Ai đó có kỹ năng mã hóa tối thiểu có thể dễ dàng thay đổi bố cục của giao diện người dùng, thay đổi chú thích nút và menu, dịch giao diện người dùng sang ngôn ngữ khác, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.