Prácticas y pautas de programación estándar para desarrollar paquetes

Este tema trata sobre las prácticas y pautas de codificación estándar que ayudan a garantizar el desarrollo de paquetes de alta calidad.

Pruebas
Le permiten garantizar un código de alta calidad. Escriba suficientes pruebas de unidades y pruebas de integración para su paquete.
Íconos
Establezca el ícono adecuado para su paquete.
Configuración manual de la versión
La versión de compilación del paquete SDK se actualiza automáticamente cada vez que ocurre una compilación. Sin embargo, puede configurarlo manualmente en el proyecto de comandos de un archivo común build.gradle.
  • Actualice el archivo build.gradle antes de una compilación.
  • Introduzca números de hasta cuatro dígitos, separados por un punto, como se muestra a continuación:

. . .
ext {
    version '2.0.8'
}
dependencies {...}
Dependencias
Integre todas las dependencias en su paquete JAR. Cargue las dependencias en tiempo de ejecución. Para ello, extráigalas a una ubicación temporal. Asegúrese de limpiar la ubicación temporal después de que se hayan cargado las dependencias.
Archivos JAR dependientes
Agregue archivos JAR dependientes en las dependencias del archivo build.gradle como implementación para que los archivos JAR dependientes se incluyan en el paquete.
	
. . .
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'
	}
. . . 
Agregar acciones nuevas a un paquete existente
Cuando agregue acciones nuevas a un paquete existente, asegúrese de limpiar antes de compilar el paquete. Siempre es una buena práctica utilizar clean build - gradlew.bat clean build shadowJar.
Mensajes de error
Proporcione mensajes de error significativos.
  • muestre mensajes de error significativos. Por ejemplo, en idioma local utilizando una API de i18n con BotCommandException, muestre una nueva excepción BotCommandException(MESSAGES.getString("Run.Exception.InvalidWorkingDirPath")).
  • No muestre mensajes de error genéricos, como ex.message.
Validación básica
Utilice las reglas de anotación de validación, tales como @NotEmpty incluidas con este kit de desarrollo. No agregue validaciones básicas a su código. Consulte Anotaciones de validación.
Bucles
Evite ejecutar bucles largos en su código. Los bucles largos pueden consumir muchos recursos de CPU, lo que puede generar errores tales como "El bot no responde".
Agregue registros
Utilice el generador de registros predeterminado log4J que se incluye en la estructura de tiempo de ejecución de bots. No agregue su propio generador de registros. Consulte el código de ejemplo para obtener más detalles.
Niveles de registro
  • ERROR/FATAL: Evento de error grave que indica que el usuario está afectado y que no hay solución alternativa.
  • ADVERTENCIA: Se produjo un error inesperado, pero el sistema se ha recuperado de él.
  • INFORMACIÓN: Mensajes informativos sobre el cambio de estado, por ejemplo, una solicitud aceptada.
  • DEPURAR: Información de diagnóstico detallada que se requerirá para depurar cuando algo sale mal.
  • RASTREAR: Toda la información se captura sobre el comportamiento de una aplicación.

    Si no está seguro del nivel de registro, configúrelo en RASTREAR.

Carga de recursos
Todos los recursos se deben cargar usando el cargador de clases del contexto actual del hilo, como se muestra en el siguiente ejemplo:
Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.json");