Pratiques et directives de codage standard pour le développement de packages
- Dernière mise à jour2022/05/19
Pratiques et directives de codage standard pour le développement de packages
Cette rubrique couvre les pratiques et directives de codage standard permettant de garantir un développement de haute qualité des packages.
- Tests
- Assurez-vous d'avoir un code de haute qualité. Rédigez suffisamment de tests d'unité et de tests d'intégration pour votre package.
- Icônes
- Définissez l'icône appropriée pour votre package.
- Réglage manuel de la version
- La version de génération du package du kit SDK est mise à jour automatiquement chaque fois qu'une génération se produit. Cependant, vous pouvez le définir manuellement dans le projet de commande d'un fichier build.gradle commun.
- Mettez à jour le fichier build.gradle avant une génération.
- Saisissez jusqu'à quatre chiffres, séparés par un point, comme illustré ci-dessous :
. . . ext { version '2.0.8' } dependencies {...}
- Dépendances
- Intégrez toutes les dépendances dans votre package JAR. Chargez les dépendances au moment de l'exécution en les extrayant dans un emplacement temporaire. Assurez-vous de nettoyer l'emplacement temporaire après avoir chargé les dépendances.
- Fichiers JAR dépendants
- Ajoutez les fichiers JAR dépendants sous les dépendances dans le fichier build.gradle afin que les fichiers JAR dépendants soient regroupés.
. . . 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' } . . .
- Ajouter de nouvelles actions au package existant
- Lorsque vous ajoutez de nouvelles actions à un package existant, veillez à procéder à un nettoyage avant toute mise en package. Une bonne pratique consiste toujours à effectuer une génération propre - gradlew.bat clean build shadowJar.
- Messages d'erreur
- Disposez de messages d'erreur significatifs.
-
Envoyez des messages d'erreur significatifs. Par exemple, dans la langue locale en utilisant les API i18n avec
BotCommandException
, lancez une nouvelle exceptionBotCommandException(MESSAGES.getString("Run.Exception.InvalidWorkingDirPath"))
. -
N'envoyez pas de messages d'erreur génériques, comme
ex.message
.
-
Envoyez des messages d'erreur significatifs. Par exemple, dans la langue locale en utilisant les API i18n avec
- Validation de base
- Utilisez les règles d'annotation de validation telles que
@NotEmpty
, incluses dans ce kit de développement. N'ajoutez pas de validations de base à votre code. Reportez-vous à la rubrique Annotations de validation. - Boucles
- Évitez les longues boucles d'exécution dans votre code. Les longues boucles d'exécution peuvent entraîner une utilisation élevée du processeur, menant à des erreurs telles que « Le robot ne répond pas ».
- Ajouter une journalisation
- Utilisez l'enregistreur par défaut log4J fourni dans le cadre de l'exécution du robot. N'ajoutez pas votre propre enregistreur. Voir l'exemple de code pour plus de détails.
- Niveaux de journalisation
-
- ERREUR/FATALE : Erreur grave : l'utilisateur est affecté et il n'y a pas de solution de contournement.
- AVERTISSEMENT : Une erreur inattendue s'est produite, mais le système s'en est remis.
- INFO : Messages d'information sur le changement d'état, par exemple, une demande acceptée.
- DÉBOGAGE : Informations de diagnostic détaillées qui seront nécessaires pour déboguer en cas de problème.
-
SUIVI : Toutes les informations sur le comportement d'une application sont saisies.
Si vous n'êtes pas sûr du niveau de journalisation, définissez-le sur SUIVI.
- Chargement des ressources
- Toutes les ressources doivent être chargées à l'aide du chargeur de classe de contexte de thread actuel, comme illustré dans l'exemple suivant :
Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.json");