Quelles directives dois-je suivre lors de la conception d'une bibliothèque?


11

Je travaille sur un projet Arduino utilisant Uno. Le projet contient une quantité importante de code. Je voudrais créer une bibliothèque et je pourrai même la partager plus tard. Quelles directives dois-je suivre lors de la conception de la bibliothèque?


N'est-ce pas une question plus générale, peut-être pour Stack Overflow - il semble que la partie Arduino dans cela ne soit pas pertinente. Cela dit, cela peut produire des conseils utiles pour les contraintes de mémoire d'un Arduino.

Réponses:


12

Il y a beaucoup de points que vous devez garder à l'esprit lors de la conception d'une bibliothèque. Comme vous le ferez probablement, finirez par partager votre travail avec d'autres, il est extrêmement important de suivre des modèles de conception cohérents. Gardez à l'esprit que les autres utilisateurs auront des niveaux de compétence extrêmement variables, alors concevez une bibliothèque facile à utiliser, dans la mesure du possible.

Conseils de base

Pin Map

Fournissez une carte des broches de base que votre bibliothèque attend. Ne gardez pas le mappage des broches statique, mais permettez à l'utilisateur d'apporter des modifications facilement.

Bibliothèque de travail

L'une des premières choses que vous devriez essayer de vous assurer est que votre bibliothèque fonctionne. Si ce n'est pas le cas, indiquez-le clairement. Vous ne voudriez pas finir par perdre votre temps à essayer de travailler avec des logiciels défectueux, alors ne laissez pas les autres le faire aussi.

Fichier Readme de base

Mentionnez très clairement à quelle (s) carte (s) la bibliothèque a été conçue, sur laquelle elle a été testée et à quelle (s) carte (s) elle devrait fonctionner. Spécifiez la génération (version) de chaque carte mentionnée ici.

Interfaces

La prochaine chose est que vous devez avoir des interfaces clairement définies. Une bibliothèque de travail avec des interfaces alambiquées est frustrante. Cela vous aidera vous-même à utiliser la bibliothèque plus tard et facilitera les choses pour les autres utilisateurs. Cela devrait être l'un des aspects les plus importants à garder à l'esprit.

Que vous suiviez une approche descendante ou ascendante, les interfaces doivent toujours être claires dans votre esprit. Dans une approche ascendante, cela peut et sera difficile, mais cela ne doit pas être ignoré. Sinon, vous vous retrouverez avec une bibliothèque trop complexe qui pourrait ne pas être utilisable.

Fonctions spéciales

Si vous avez des fonctions qui utilisent certaines caractéristiques spéciales de la carte, assurez-vous de faire ressortir ces fonctions, mentionnez-les dans le fichier Lisez-moi et également dans les commentaires.

Attentes occupées

Il peut y avoir des scénarios où vous devrez peut-être utiliser une attente occupée. De telles fonctions, en fonction de la logique du programme, peuvent empêcher le flux de contrôle normal, causant ainsi des problèmes au milieu d'une tâche critique. Essayez d'utiliser des interruptions ou d'autres algorithmes, si possible. Si ce n'est pas le cas, mentionnez clairement ces fonctions.

commentaires

Assurez-vous de continuer à commenter chaque petit et grand changement que vous apportez. Écrivez de longs commentaires agréables pour toutes les fonctions critiques et plus petits pour les autres. Décrivez explicitement votre interface, chaque argument, ce qu'il fait et ce qu'il renvoie. C'est beaucoup de travail supplémentaire, mais cela sera extrêmement utile pour vous et pour les autres. Si vous avez des fonctions qui peuvent ne pas fonctionner sur différents tableaux, mentionnez-les ici. S'il s'agit de fonctions intermédiaires utilisées par d'autres fonctions et pouvant être nécessaires, mentionnez-les dans le fichier Lisezmoi.

Cohérence

Assurez-vous que tout, même les commentaires, sont cohérents dans les fichiers .het .cpp.

Conservez uniquement les fonctions associées dans un seul fichier. Avoir quelques petits modules, mais logiquement cohérents, vaut mieux qu'un énorme fichier avec tout ce qu'il contient.


Conseils avancés

Fichier Lisezmoi détaillé

Écrivez un fichier lisez-moi clair décrivant la bibliothèque, ses capacités, tout problème ou bogue, et l'utilisabilité de base. Utilisez un fichier séparé pour définir et expliquer chaque interface comme décrit ci-dessus.

Structure du répertoire

Une fois que la bibliothèque devient volumineuse, il peut être nécessaire de la diviser en répertoires. Ce n'est pas facilement possible lors de l'utilisation de l' . Mais, si vous en êtes arrivé là, vous êtes probablement un utilisateur Arduino avancé et utilisez des outils de développement plus puissants. Sinon, c'est l'univers qui vous le dit.

Licence

Assurez-vous d'ajouter une licence.

Contrôle de version

Utilisez un outil VCS tel que Git ou SVN. Cela permettra de voir plus facilement les modifications apportées, de revenir aux anciennes versions, de détecter le code à l'origine des erreurs et même de collaborer avec d'autres.


Qu'est-ce qu'un pin map?
Chris Anderson

2

La réponse d'AshRj est très bonne - je n'ai que 2 points à ajouter.

Point 1: Documentation

AshRj a recommandé d'écrire un fichier Lisezmoi détaillé. Bien que cela puisse être une bonne pratique, cela peut rapidement devenir incontrôlable avec des bibliothèques plus grandes - en effet, même à quelques milliers de lignes (ce qui n'est vraiment pas beaucoup), un fichier Lisezmoi n'aura presque aucun avantage. Ma recommandation serait d'aller plus loin et d'utiliser l'équivalent de Javadocs pour C ++ - comme l' explique cette réponse (c'est sur Stack Overflow), Doxygen est un outil très utile pour garder la documentation gérable et à portée de main (personne ne veut éditer un Fichier Lisezmoi 10K ...)

Point 2: Répertoires

En contraste avec la réponse d'AshRj, utilisez toujours des répertoires. Même si vous ne disposez que de 10 fichiers, peut-être même avec seulement 7 ou 8. Je sais que cela semble un peu stupide, mais c'est une solution d'avenir pour votre travail, et si vous ne commencez pas tôt, vous vous retrouverez avec un gâchis de des dossiers. Les répertoires ne sont pas réservés aux grands projets - les petits devraient également les utiliser. N'oubliez pas qu'en C ++ (le langage Arduino de facto), les répertoires sont ignorés lors de l'inclusion de fichiers à partir d'une bibliothèque - ils n'existent qu'en tant qu'outil de gestion de code.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.