Соглашение о присвоении имен для служебных классов в Java

Когда классы утилиты записи в Java, за чем должны следовать некоторые хорошие инструкции?

packges должен быть "util" или "utils"? Это - ClassUtil или ClassUtils? Когда класс является "Помощником" или "Утилитой"? Утилита или Утилиты? Или Вы используете смесь их?

Стандартная библиотека Java использует и Utils и Utilities:

  • javax.swing. Утилиты
  • javax.print.attribute. AttributeSetUtilities
  • javax.swing.plaf.basic. BasicGraphicsUtils

Apache использует множество Util и Utils, хотя главным образом Utils:

  • org.apache.commons.modeler.util. DomUtil
  • org.apache.commons.modeler.util. IntrospectionUtils
  • org.apache.commons.io. FileSystemUtils
  • org.apache.lucene.wordnet. AnalyzerUtil
  • org.apache.lucene.util. ArrayUtil
  • org.apache.lucene.xmlparser. DOMUtils

Spring использует много классов Helper и Utils:

  • org.springframework.web.util. UrlPathHelper
  • org.springframework.core. ReflectiveVisitorHelper
  • org.springframework.core. NestedExceptionUtils
  • org.springframework.util. NumberUtils

Так, как Вы называете свои служебные классы?

110
задан JR. 20 April 2010 в 16:10
поделиться

5 ответов

Как и во многих подобных соглашениях, важно не столько то, какое соглашение вы используете, сколько то, что вы используете его последовательно. Например, если у вас есть три служебных класса и вы называете их CustomerUtil, ProductUtils и StoreUtility, другие люди, пытающиеся использовать ваши классы, будут постоянно путаться и вводить CustomerUtils по ошибке, должны искать его, проклинать вас несколько раз, и т. д. (Однажды я слышал лекцию о последовательности, где докладчик показал слайд, показывающий план своей речи с тремя основными пунктами, отмеченными «1», «2-й» и «C».)

Никогда и никогда не делал два имени, которые отличаются только некоторыми тонкостями написания, например, CustomerUtil и CustomerUtility. Если была веская причина для создания двух классов, то в них должно быть что-то другое, и имя должно, по крайней мере, дать нам представление о том, в чем это различие. Если один содержит служебные функции, связанные с именем и адресом, а другой - служебные функции, связанные с заказами, назовите их CustomerNameAndAddressUtil и CustomerOrderUtil или что-то в этом роде. Я регулярно схожу с ума, когда вижу бессмысленные тонкие различия в именах. Как и вчера, я работал над программой, в которой было три поля для транспортных расходов: «фрахт», «фрахт» и «фрахт». Мне пришлось изучить код, чтобы понять, в чем разница между ними.

77
ответ дан 24 November 2019 в 03:16
поделиться

Для этого в мире Java нет стандартных правил / соглашений. Однако я предпочитаю добавлять "s" в конце имени класса, как упоминал @colinD.

Это кажется довольно стандартным для того, что делает Главный конструктор java API Джош Блох (коллекция java, а также коллекция Google)

Пока идут Helper и Util, я буду называть что-то Помощником, когда он имеет API, которые помогают достичь определенной функциональности пакета (рассматривая пакет как реализацию модуля); означает, что Util можно вызывать в любом контексте.

Например, в приложении, связанном с банковскими счетами, все статические API-интерфейсы служебных программ для конкретных номеров будут идти по адресу org.mycompany.util.Numbers

Все API-интерфейсы для бизнес-правил, связанных с конкретными бизнес-правилами, будут идти по адресу

org.mycompany.account.AccountHelper

В конце концов, это вопрос предоставления более качественной документации и более чистого кода.

27
ответ дан 24 November 2019 в 03:16
поделиться

Мне нравится соглашение о простом добавлении буквы «s» к имени типа, когда тип является интерфейсом или классом, которым вы не управляете. Примеры этого в JDK включают Коллекции и Исполнители . Это также соглашение, используемое в Коллекциях Google.

Когда вы имеете дело с классом , который вы контролируете, я бы сказал, что служебные методы обычно принадлежат самому классу.

20
ответ дан 24 November 2019 в 03:16
поделиться

Я думаю, что в качестве имени пакета должно быть «utils». Имена классов должны указывать цель логики внутри него. Добавление суфикса -util (s) излишне.

8
ответ дан 24 November 2019 в 03:16
поделиться

Я почти уверен, что слова «помощники» и «утилиты» взаимозаменяемы. В любом случае, судя по приведенным вами примерам, я бы сказал, что если ваше имя класса является аббревиатурой (или в нем есть аббревиатуры, такие как «DomUtil»), тогда назовите ваш пакет «something.WhateverUtil» (или Utils, если в вашем пакете более одной утилиты ). В противном случае, если у него есть полное имя вместо аббревиатуры, назовите его «something.WhateverUtilities».

Это действительно зависит от вас, но пока программисты знают, о чем вы говорите, вы готовы к работе. Если вы делаете это профессионально как работу для кого-то, спросите их, каковы их стандарты кодирования, прежде чем принимать мой совет. Всегда соблюдайте стандарты магазина, несмотря ни на что, так как это поможет вам сохранить работу. : -)

3
ответ дан 24 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: