Соглашение об именах компонентов Java Swing (префикс) - PullRequest
7 голосов
/ 22 января 2011

Вопрос, который мне приходил в голову при программировании на Swing на Java, был: это рекомендация или «официальное» / наиболее используемое соглашение об именах (префикс) для компонентов Swing.

Например, (хотя другие могут предпочитать другие соглашения об именах, это то, что я сейчас использую):

  • txt для JTextField
  • btn для JButton
  • фунт для JLabel
  • pnl для JPanel

Но на этом мой список заканчивается ..

Я думаю, что такие префиксы повышают читабельность в моем коде, ноУ меня нет имен для таких компонентов, как JComboBox, JList, JRadioButton, JCheckButton, и поэтому список можно продолжить.

Заранее спасибо.

Ответы [ 4 ]

20 голосов
/ 22 января 2011

Люди скажут вам, что использование префиксов - это плохо, потому что это венгерская нотация, и в настоящее время венгерская нотация считается большим запретом в программировании. Лично, как человек, который проделал определенную работу с графическим интерфейсом, я могу вам сказать, что, хотя в программировании без графического интерфейса пользователя определенно следует избегать венгерской нотации, при использовании графического интерфейса это очень хорошая практика.

Рассмотрим, например, простую форму с текстовым полем, которое должно использоваться для ввода имени пользователя. Перед этим текстовым полем должна быть метка, предлагающая пользователю ввести свое имя в текстовое поле. Теперь, как вы собираетесь назвать текстовое поле? 'Название'? Как насчет этикетки? Хорошей практикой должно быть добавление префикса к текстовому полю с помощью txt, а метки к метке - вот что такое венгерская нотация. Таким образом, текстовое поле теперь называется «txtName», а соответствующая метка называется «lblName». Это дает вам дополнительное преимущество легкого доступа к вашим текстовым полям, полям со списками и другим виджетам в редакторе вашей IDE. Например, если вы наберете «txt» и нажмете «CTRL + Пробел» в Eclipse, откроется контекстное меню со списком всех ваших текстовых полей, если вы будете следовать этим обозначениям.

Теперь, чтобы ответить на ваш вопрос. Обычный способ определить, какие три буквы вы должны использовать для префикса, это удалить все гласные из имени виджета, а также все повторяющиеся согласные. Если осталось более трех согласных, их следует игнорировать. Поэтому текстовое поле (или TextField, или как этот виджет называется в вашем предпочтительном наборе инструментов виджетов) становится «txt», меткой «lbl», комбинированным полем «cmb», таблицей «tbl» и т. Д.

8 голосов
/ 22 января 2011

Я обычно ненавижу такие вещи, потому что они попахивают венгерской нотацией.Мне не нравится идея встраивания типа в имя переменной, потому что если вы меняете типы, это не должно требовать изменения всех имен переменных.

Но в случае с Swing, я думаю, этоприемлемо.

Хорошая IDE сгенерирует для вас имена переменных.Почему бы не позволить это?Я бы также просто прописал тип, если вы настаиваете (например, submitButton вместо btnSubmit).Нажатие клавиш дешево.

5 голосов
/ 22 января 2011

Почему бы просто не вызвать JTextField textField, JButton button, JLabel label и JPanel panel.Неужели так плохо тратить несколько лишних символов, чтобы переменная читалась как английское слово?

Более того, когда я помещаю тип в имя переменной, я ставлю его в конце.Таким образом, JLabel, который отображает имя, имеет вид nameLabel (что IMO более читабельно, чем lblName).

И даже более того, следуя совету Даффимо, не рекомендуется помещать тип в имя переменной.Лучший подход - описать, что это за переменная.В случае метки имени это компонент пользовательского интерфейса, который отображает имя.Так что лучшее имя может быть nameComponent.Тот факт, что nameComponent является JLabel или каким-либо другим типом, является вторичным и не должен загромождать имя переменной.

2 голосов
/ 11 марта 2018
  • btn - JButton
  • chk - JCheckBox
  • clr - JColorChooser
  • cmb - JComboBox
  • ico - JDesktopIcon
  • edt - JEditorPane
  • fch - JFileChooser
  • ifr - JInternalFrame
  • lbl - JLabel
  • lyp - JLayeredPane
  • lst - JList
  • мну - JMenuBar
  • мн - JMenuItem
  • opt - JOptionPane
  • pnl - JPanel
  • pmn - JPopupMenu
  • prg - JProgressBar
  • рад - JRadioButton
  • rot - JRootPane
  • scb - JScollBar
  • scr - JScrollPane
  • spr - JSeparator
  • sld - JSlider
  • spn - JSpinner
  • spl - JSplitPane
  • tab - JTabbedPaneJTable
  • tbl - JTable
  • tbh- JTableHeader
  • txa - JTextArea
  • txt - JTextField
  • txp - JTextPane
  • tgl - JToggleButton
  • tlb - JToolB
  • tlt - JToolTip
  • tre - JTree
  • vpr - JViewport

source -: http://zuskin.com/java_naming.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...