Práticas de codificação padrão e diretrizes para o desenvolvimento de pacotes

Este tópico abrange práticas de codificação padrão e diretrizes que ajudam a garantir o desenvolvimento de pacotes de alta qualidade.

Teste
Assegure um código de alta qualidade. Escreva testes de unidade e testes de integração suficientes para o seu pacote.
Ícones
Defina o ícone adequado para o seu pacote.
Definir a versão manualmente
A versão de compilação do pacote SDK é atualizada automaticamente sempre que uma compilação ocorre. No entanto, você pode defini-lo manualmente no projeto de comando de um arquivo build.gradle comum.
  • Atualize o arquivo build.gradle antes de uma compilação.
  • Digite até quatro números de dígitos, separados por um ponto, como mostrado abaixo:

. . .
ext {
    version '2.0.8'
}
dependencies {...}
Dependências
Incorpore todas as dependências ao seu pacote JAR. Carregue as dependências no tempo de execução extraindo-as para um local temporário. Limpe o local temporário após as dependências serem carregadas.
Arquivos JAR dependentes
Adicione arquivos JAR dependentes sob dependências no arquivo build.gradle como implementação para que os arquivos JAR dependentes façam parte do pacote.
	
. . .
dependencies {
		compileOnly name: 'command-annotations'
		compileOnly name: 'bot-runtime'
		compileOnly name: 'bot-api'
		implementation name: 'i18n-api'
              implementation name: 'mydependentjavafile.jar'
		apt name: 'command-processor'
		compileOnly group: 'org.apache.logging.log4j', name: 'log4j-core', version: "$loggerVersion"
		testImplementation "org.testng:testng:$testNgVersion"
		testImplementation name: 'bot-runtime'
		testImplementation name: 'bot-api'
	}
. . . 
Adicionar novas ações ao pacote de saída
Ao adicionar novas ações a um pacote existente, faça a limpeza antes de empacotar. É sempre uma prática recomendada fazer a limpeza da versão - gradlew.bat clean build shadowJar.
Mensagens de erro
Forneça mensagens de erro significativas.
  • Lance mensagens de erro significativas. Por exemplo, no idioma local, usando APIs i18n com BotCommandException, lance uma nova exceção BotCommandException(MESSAGES.getString("Run.Exception.InvalidWorkingDirPath")).
  • Não lance mensagens de erro genéricas, como ex.message.
Validação básica
Use as regras de anotação de validação como @NotEmpty incluídas neste kit de desenvolvimento. Não adicione validações básicas para o seu código. Consulte Anotações de validação.
Loops
Evite longos loops de execução em seu código. Longos loops de execução podem causar alta utilização de CPU, levando a erros como, “Bot não responde”.
Adicionar registro
Use o registrador padrão log4J fornecido na estrutura do tempo de execução do bot. Não adicione o seu próprio registrador. Consulte o código de exemplo para obter detalhes.
Níveis de registro
  • ERRO/FATAL: Evento de erro grave em que o usuário é afetado e não há solução alternativa.
  • AVISO: Ocorreu um erro inesperado, mas o sistema se recuperou dele.
  • INFORMAÇÕES: Mensagens informativas sobre alteração de estado, por exemplo, uma solicitação aceita.
  • DEPURAÇÃO: Informações de diagnóstico detalhadas que serão necessárias para depurar quando algo der errado.
  • RASTREAMENTO: Todas as informações são capturadas sobre o comportamento de um aplicativo.

    Se você não tiver certeza do nível de registro, defina-o como TRACE.

Carregar recursos
Todos os recursos devem ser carregados utilizando o carregador de classe de contexto de thread atual, como mostrado no exemplo a seguir:
Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.json");