Когда классы утилиты записи в Java, за чем должны следовать некоторые хорошие инструкции?
packges должен быть "util" или "utils"? Это - ClassUtil или ClassUtils? Когда класс является "Помощником" или "Утилитой"? Утилита или Утилиты? Или Вы используете смесь их?
Стандартная библиотека Java использует и Utils и Utilities:
Apache использует множество Util и Utils, хотя главным образом Utils:
Spring использует много классов Helper и Utils:
Так, как Вы называете свои служебные классы?
Как и во многих подобных соглашениях, важно не столько то, какое соглашение вы используете, сколько то, что вы используете его последовательно. Например, если у вас есть три служебных класса и вы называете их CustomerUtil, ProductUtils и StoreUtility, другие люди, пытающиеся использовать ваши классы, будут постоянно путаться и вводить CustomerUtils по ошибке, должны искать его, проклинать вас несколько раз, и т. д. (Однажды я слышал лекцию о последовательности, где докладчик показал слайд, показывающий план своей речи с тремя основными пунктами, отмеченными «1», «2-й» и «C».)
Никогда и никогда не делал два имени, которые отличаются только некоторыми тонкостями написания, например, CustomerUtil и CustomerUtility. Если была веская причина для создания двух классов, то в них должно быть что-то другое, и имя должно, по крайней мере, дать нам представление о том, в чем это различие. Если один содержит служебные функции, связанные с именем и адресом, а другой - служебные функции, связанные с заказами, назовите их CustomerNameAndAddressUtil и CustomerOrderUtil или что-то в этом роде. Я регулярно схожу с ума, когда вижу бессмысленные тонкие различия в именах. Как и вчера, я работал над программой, в которой было три поля для транспортных расходов: «фрахт», «фрахт» и «фрахт». Мне пришлось изучить код, чтобы понять, в чем разница между ними.
Для этого в мире Java нет стандартных правил / соглашений. Однако я предпочитаю добавлять "s" в конце имени класса, как упоминал @colinD.
Это кажется довольно стандартным для того, что делает Главный конструктор java API Джош Блох (коллекция java, а также коллекция Google)
Пока идут Helper и Util, я буду называть что-то Помощником, когда он имеет API, которые помогают достичь определенной функциональности пакета (рассматривая пакет как реализацию модуля); означает, что Util можно вызывать в любом контексте.
Например, в приложении, связанном с банковскими счетами, все статические API-интерфейсы служебных программ для конкретных номеров будут идти по адресу org.mycompany.util.Numbers
Все API-интерфейсы для бизнес-правил, связанных с конкретными бизнес-правилами, будут идти по адресу
org.mycompany.account.AccountHelper
В конце концов, это вопрос предоставления более качественной документации и более чистого кода.
Мне нравится соглашение о простом добавлении буквы «s» к имени типа, когда тип является интерфейсом или классом, которым вы не управляете. Примеры этого в JDK включают Коллекции
и Исполнители
. Это также соглашение, используемое в Коллекциях Google.
Когда вы имеете дело с классом , который вы контролируете, я бы сказал, что служебные методы обычно принадлежат самому классу.
Я думаю, что в качестве имени пакета должно быть «utils». Имена классов должны указывать цель логики внутри него. Добавление суфикса -util (s) излишне.
Я почти уверен, что слова «помощники» и «утилиты» взаимозаменяемы. В любом случае, судя по приведенным вами примерам, я бы сказал, что если ваше имя класса является аббревиатурой (или в нем есть аббревиатуры, такие как «DomUtil»), тогда назовите ваш пакет «something.WhateverUtil» (или Utils, если в вашем пакете более одной утилиты ). В противном случае, если у него есть полное имя вместо аббревиатуры, назовите его «something.WhateverUtilities».
Это действительно зависит от вас, но пока программисты знают, о чем вы говорите, вы готовы к работе. Если вы делаете это профессионально как работу для кого-то, спросите их, каковы их стандарты кодирования, прежде чем принимать мой совет. Всегда соблюдайте стандарты магазина, несмотря ни на что, так как это поможет вам сохранить работу. : -)