2011-01-22 46 views
5

Một câu hỏi được đưa ra khi tôi lập trình với Swing trong Java, đó là đề xuất hay quy ước đặt tên "chính thức" được sử dụng nhiều nhất trên các thành phần Swing.Quy ước tên trên các thành phần Java Swing (tiền tố)

Chẳng hạn như (mặc dù khác có thể thích quy ước đặt tên khác đây là những gì tôi hiện đang sử dụng):

  • txt cho JTextField
  • BTN cho JButton
  • lbl cho JLabel
  • pnl cho JPanel

Nhưng sau đó danh sách của tôi kết thúc ..

Tôi nghĩ rằng các tiền tố như vậy nâng cao khả năng đọc trong mã của tôi như vậy, nhưng tôi không có bất kỳ tên nào cho các thành phần như JComboBox, JList, JRadioButton, JCheckButton và vì vậy danh sách này vẫn tiếp diễn.

Xin cảm ơn trước.

+0

Không có quy ước đặt tên "chính thức" cho Swing. –

+0

Mùi như ký hiệu Hungary –

Trả lời

18

Mọi người sẽ cho bạn biết rằng việc sử dụng tiền tố là xấu, vì đó là ký hiệu của Hungary và ngày nay, ký hiệu Hungary được coi là không lớn trong lập trình. Cá nhân, như một người đã thực hiện một số công việc GUI nhất định, tôi có thể nói với bạn rằng, trong khi ký hiệu Hungary chắc chắn nên tránh trong lập trình không phải GUI, khi thực hiện GUI thì đó là một thực hành rất tốt.

Hãy xem xét, ví dụ: một biểu mẫu đơn giản với hộp văn bản được sử dụng để nhập tên của người dùng. Ở phía trước hộp văn bản này phải là một nhãn nhắc người dùng nhập tên của anh ấy vào hộp văn bản. Bây giờ, bạn sẽ đặt tên cho hộp văn bản như thế nào? 'Tên'? Điều gì về nhãn? Một thực hành tốt nên được tiền tố hộp văn bản với txt, và nhãn với nhãn, đó là những gì ký hiệu Hungary là tất cả về. Do đó, hộp văn bản bây giờ được đặt tên là 'txtName' và nhãn tương ứng được đặt tên là 'lblName'.Điều này mang lại cho bạn lợi ích bổ sung khi dễ dàng truy cập vào hộp văn bản, hộp tổ hợp và các tiện ích khác khi trong trình soạn thảo IDE của bạn. Ví dụ, gõ 'txt' và nhấn CTRL + Space trong Eclipse sẽ mở ra một menu ngữ cảnh liệt kê tất cả các hộp văn bản của bạn, nếu bạn làm theo ký pháp này.

Bây giờ, để trả lời câu hỏi của bạn. Cách thông thường để xác định ba chữ cái bạn nên sử dụng cho tiền tố là xóa tất cả các nguyên âm khỏi tên của tiện ích và tất cả các phụ âm lặp lại. Nếu có nhiều hơn thì ba phụ âm còn lại, họ nên bỏ qua. Vì vậy, một textbox (hoặc TextField, hoặc bất cứ điều gì phụ tùng này được gọi trong bộ công cụ widget ưa thích của bạn) trở thành 'txt', một nhãn 'lbl', một hộp kết hợp 'cmb', một bảng 'tbl' và vân vân.

+0

Vì vậy, bạn muốn sử dụng "chc" cho JCheckButton? Tôi hỏi, vì tôi có thể thích "chb" hơn, nếu không tôi sẽ không bao giờ tìm hiểu ý nghĩa của nó. Đối với các thành phần khác tôi có thể nghĩ đến, nó sẽ hoạt động tốt. – maaartinus

+0

Tôi phải đồng ý. Các thành phần của Gui là các biến duy nhất nhận được điều trị btn_XXX, pnl_XXX, chk_XXX từ tôi. Đối với một điều, nó giúp tôi trực quan riêng biệt GUI vars từ nhà nước/dữ liệu vars. Nhưng ... vì những lý do duffy đã đề cập, tôi cảm thấy hơi bẩn khi làm điều đó. –

+0

Tôi không chắc chắn tại sao một người nào đó sẽ downvote một câu trả lời ý kiến ​​cho một câu hỏi chủ quan. –

7

Tôi thường ghét loại điều này, bởi vì nó có các ký hiệu Hungary. Tôi không thích ý tưởng nhúng các loại trong tên của biến, bởi vì nếu bạn thay đổi các loại nó không nên ủy quyền thay đổi tất cả các tên biến.

Nhưng trong trường hợp Swing, tôi đoán nó có thể chấp nhận được.

IDE tốt sẽ tạo tên biến cho bạn. Tại sao không để nó? Tôi cũng chỉ viết ra loại nếu bạn nhấn mạnh (ví dụ: submitButton thay vì btnSubmit). Tổ hợp phím có giá rẻ.

+0

Vâng, bạn đã có một số điểm tốt mà tôi sẽ mang theo bên mình, cảm ơn bạn! – LuckyLuke

4

Tại sao không chỉ gọi JTextField textField, JButton button, JLabel label và JPanel panel. Có quá tệ để chi tiêu thêm một vài ký tự để biến biến này đọc như một từ tiếng Anh không?

Hơn nữa, khi tôi đặt loại trong tên biến, tôi đặt nó vào cuối. Vì vậy, một JLabel hiển thị tên là nameLabel (IMO dễ đọc hơn lblName).

Và thậm chí hơn nữa, theo lời khuyên của duffymo, thực tiễn không tốt là đặt loại trong tên biến. Cách tiếp cận tốt hơn là mô tả biến là gì. Trong trường hợp nhãn tên, đó là thành phần giao diện người dùng hiển thị tên. Vì vậy, một tên tốt hơn có thể là nameComponent. Thực tế là nameComponent là một JLabel hoặc một số loại khác là thứ yếu và không nên lộn xộn tên biến.

+0

Xem anser của tôi về lý do tại sao sử dụng tiền tố là tốt hơn so với sử dụng hậu tố (đặt loại ở cuối). – Sandman

+1

@Sandman Bạn đã không nói gì về hậu tố trong câu trả lời của bạn. Những gì bạn chỉ là sử dụng tiền tố tốt hơn là không sử dụng nó chút nào. Nhưng tôi có thể nói tương tự về hậu tố. Ví dụ: 'nameTextField' và' nameLabel'. –

+0

@Andrew Chắc chắn, bạn có thể sử dụng hậu tố. Tuy nhiên, xin vui lòng đọc hai câu cuối cùng trong đoạn thứ hai của câu trả lời của tôi, nơi tôi giải thích những lợi ích của việc sử dụng một tiền tố trên hậu tố. – Sandman

Các vấn đề liên quan