Какие полезные рекомендации следует соблюдать при написании служебных классов на Java?
Должны быть пакеты "util" или "utils"? Это ClassUtil или ClassUtils? Когда класс является «Помощником» или «Полезностью»? Утилиты или утилиты? Или вы используете их смесь?
Стандартная библиотека Java использует как утилиты, так и утилиты:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
Apache использует различные утилиты и утилиты, но в основном утилиты:
- 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
Итак, как вы называете свои служебные классы?
В мире Java для этого нет стандартных правил / соглашений. Однако я предпочитаю добавлять «s» в конце имени класса, как упоминал @colinD.
Это кажется довольно стандартным для того, что делает Мастер java API Designer Джош Блох (коллекция java, а также коллекция google)
Пока идут Helper и Util, я буду называть что-то Helper, если у него есть API, которые помогают достичь определенной функциональности пакета (учитывая, что пакет реализует модуль); означает, что Util можно вызывать в любом контексте.
Например, в приложении, связанном с банковскими счетами, все статические API-интерфейсы служебных программ для конкретных номеров будут идти в
org.mycompany.util.Numbers
Все бизнес-правила для конкретных бизнес-правил, помогающие API, перейдут в
В конце концов, это вопрос обеспечения лучшей документации и более чистого кода.
источник
Мне нравится соглашение о простом добавлении «s» к имени типа, когда тип является интерфейсом или классом, которым вы не управляете. Примеры этого в JDK включают
Collections
иExecutors
. Это также соглашение, используемое в Коллекциях Google.Когда вы имеете дело с контролируемым вами классом , я бы сказал, что служебные методы в целом принадлежат самому классу.
источник
Я думаю, что в названии пакета должно быть «utils». Имена классов должны указывать цель логики внутри него. Добавление суфикса -util (s) излишне.
источник
tld.organization.app.util
Пакет не должен существовать (может, но не должен), любое количествоtld.organization.app.feature.util
упаковок прекрасно.Я почти уверен, что слова «помощники» и «утилиты» взаимозаменяемы. В любом случае, судя по приведенным вами примерам, я бы сказал, что если ваше имя класса является аббревиатурой (или в нем есть аббревиатуры, такие как "DomUtil"), тогда назовите ваш пакет "something.WhateverUtil" (или Utils, если в вашем пакете более одной утилиты ). В противном случае, если у него есть полное имя вместо аббревиатуры, назовите его «something.WhateverUtilities».
Это действительно зависит от вас, но пока программисты знают, о чем вы говорите, вы готовы к работе. Если вы делаете это профессионально как работу для кого-то, спросите их, каковы их стандарты кодирования, прежде чем принимать мой совет. Всегда соблюдайте стандарты магазина, несмотря ни на что, так как это поможет вам сохранить работу. :-)
источник