Ao escrever classes de utilitários em Java, quais são algumas boas diretrizes a serem seguidas?
Os pacotes devem ser "util" ou "utils"? É ClassUtil ou ClassUtils? Quando uma aula é um "Ajudante" ou um "Utilitário"? Utilitário ou utilitários? Ou você usa uma mistura deles?
A biblioteca Java padrão usa utilitários e utilitários:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
O Apache usa uma variedade de Utilitários e Utilitários, embora principalmente 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 usa muitas classes Helper e Utils:
- org.springframework.web.util.UrlPathHelper
- org.springframework.core.ReflectiveVisitorHelper
- org.springframework.core.NestedExceptionUtils
- org.springframework.util.NumberUtils
Então, como você nomeia suas classes de utilitários?
Não existe uma regra / convenção padrão no mundo Java para isso. No entanto, prefiro adicionar "s" no final do nome da classe como @colinD mencionou.
Isso parece bastante normal para o que o mestre da API Java Designer Josh Bloch faz (coleção java, bem como coleção do Google)
Enquanto Helper e Util continuarem, chamarei algo de Helper quando tiver APIs que ajudam a atingir uma funcionalidade específica de um pacote (considerando um pacote como para implementar um módulo); significa enquanto um Util pode ser chamado em qualquer contexto.
Por exemplo, em um aplicativo relacionado a contas bancárias, todas as APIs estáticas de utilitário específico de número iriam para
org.mycompany.util.Numbers
Todas as regras de negócios específicas de "Conta" ajudando APIs iriam para
Afinal, é uma questão de fornecer uma documentação melhor e um código mais limpo.
fonte
Eu gosto da convenção de apenas adicionar "s" ao nome do tipo quando o tipo é uma interface ou uma classe que você não controla. Exemplos disso no JDK incluem
Collections
eExecutors
. É também a convenção usada nas coleções do Google.Quando você está lidando com uma classe sobre a qual você tem controle, eu diria que os métodos utilitários pertencem à própria classe em geral.
fonte
Eu acho que 'utils' deve ser o nome do pacote. Os nomes das classes devem especificar o propósito da lógica dentro dela. Adicionar o sufix -util (s) é redundante.
fonte
tld.organization.app.util
pacote não deveria existir (poderia, mas não deveria), qualquer número detld.organization.app.feature.util
pacotes é perfeitamente adequado.Tenho certeza de que as palavras "ajudantes" e "utilitários" são usadas alternadamente. De qualquer forma, a julgar pelos exemplos que você forneceu, eu diria que se o seu nome de classe é uma abreviatura (ou tem abreviações como "DomUtil"), então chame seu pacote de "qualquer.WhateverUtil" (ou Utils se houver mais de um utilitário em seu pacote ) Caso contrário, se tiver um nome completo em vez de uma abreviatura, chame-o de "qualquer.Quaisquer utilidades".
Depende muito de você, mas contanto que os programadores saibam do que você está falando, você está pronto para partir. Se você está fazendo isso profissionalmente como um trabalho para alguém, pergunte quais são seus padrões de codificação antes de seguir meu conselho. Sempre siga os padrões da loja, não importa o que aconteça, pois isso o ajudará a manter seu emprego. :-)
fonte