Créons une spécification externe facile à gérer
J'ai remarqué que le développement du programme est divisé. Certains modules sont plus faciles à maintenir pour les nouveaux arrivants, tandis que d'autres ne le sont pas. Des modules faciles à entretenir vous permettent d'améliorer votre code le jour de votre adhésion. Des modules qui ne continuent pas à être perçus comme inaccessibles, même après des mois. Créez des spécifications externes faciles à utiliser pour réduire votre travail.
** Caractéristiques des modules faciles à entretenir pour les nouveaux arrivants **
- Les spécifications externes sont claires.
―― Les commentaires de documentation sont substantiels.
- La distinction entre les arguments in, out et inout est claire.
@param[in], @param[out]
- L'attribut Const est attaché à l'argument qui peut être l'attribut const.
--Lors de la définition d'une fonction, transmettez l'argument par référence lorsque cela est possible.
- Un test unitaire a été effectué.
- Le nombre de fichiers d'en-tête à inclure est limité.
- Les mots sont choisis pour réduire les malentendus.
- \ #define utilise le type enum plutôt que les constantes de macro.
- Les types std :: vector et std :: map sont utilisés.
- En utilisant des espaces de noms et des classes, la portée des variables est réduite.
- Les noms de variables et les noms d'éléments sont des noms organisés. (Ce n'était pas un bon nom depuis le début, il a été renommé après réflexion)
- Au lieu d'écrire la définition de macro de la constante de macro #ifdef qui couvre plusieurs codes source dans le code source, écrivez-la dans les fichiers CMakeLists.txt, * .sln, * .proj, etc. Ce faisant, * .cpp, * .h lui-même ne seront pas modifiés. Il est préférable de ne pas modifier le code source lors du contrôle de version.
** Caractéristiques des modules difficiles à maintenir pour les nouveaux arrivants **
- Les spécifications externes ne sont pas claires.
―― Quelle est la description la plus efficace de la spécification externe ne peut pas être retracée à partir du commentaire du document du code source.
- Même dans les documents autres que le code source, les documents valides et les documents périmés sont mélangés.
- Commentaires de documentation insuffisants.
- La distinction entre les arguments in, out et inout n'est pas claire.
--Même si l'argument autorise l'attribut const, l'attribut const n'est pas attaché.
- Lors de la définition d'une fonction, même s'il est possible de passer par référence, elle est définie en passant quand même par pointeur.
- Aucun test unitaire n'a été effectué.
- Le nombre de fichiers d'en-tête à inclure augmentera de toute façon.
- Les mots facilement mal compris restent dans les commentaires documentaires.
――Il est nécessaire de comprendre le module après avoir connu l'image entière.
- \ #define utilise des constantes de macro.
--Utilisez un tableau de taille fixe plutôt que std :: vector.
--Utilisez les instructions case et if () {} else if () {} else if () {} else {} plutôt que le type std :: map.
- Même s'il s'agit d'un fichier cpp, la priorité est donnée à la possibilité de l'écrire dans la plage des spécifications du langage C.
Par conséquent, la portée des variables a tendance à être large et de nombreuses descriptions de variables globales et externes demeurent.
―― Qu'est-ce que CMake?
Je pense empiriquement que si vous faites d'abord un prototype avec python, vérifiez l'idée, puis définissez les spécifications C ++, ce sera une bonne spécification externe.
La création d'une spécification externe facile à gérer facilite non seulement la maintenance de la bibliothèque, mais facilite également l'utilisation de la bibliothèque par les utilisateurs.
Le code qui éclate en externe est difficile à tester unitaire.
Si vous essayez d'effectuer un test unitaire et d'augmenter le nombre de modules requis vers la cible du lien, vous sortirez du test unitaire. Il est probable qu'il y ait un problème avec les explosions externes.
Supprimer extern de la bibliothèque C ++
est créé.
Remarque:
Implémentons une fonction de traitement d'image avec une structure de données d'image comme argument dans votre propre bibliothèque
A écrit. J'espère que ce sera un indice lors de la création d'une spécification.