2009-08-05 13 views
0

Je suis sur le point d'écrire une bibliothèque C++ qui doit être utilisée par une application Windows ainsi que sur Symbian. Linux n'est pas une exigence actuelle mais devrait généralement être possible aussi.
Pour cette raison, je voudrais utiliser les conventions de nommage STL/Boost au lieu de Symbian's, qui je pense, sont difficiles à s'habituer.
Cela semble déjà présenter un problème, lors de la compilation du code avec Carbide.C++ car il applique la convention de nommage Symbian. Comment puis-je utiliser des noms «normaux» tout en restant compatible Symbian?Comment contourner les conventions de dénomination Symbian?

J'ai d'abord pensé à des noms de classe conditionnels pour la plate-forme Symbian, mais je crains que cela ne mène à la confusion.

Pourrait-il y avoir d'autres problèmes en ne respectant pas la convention de dénomination de Symbian?

+1

De quelles conventions s'agit-il? Si c'est forcer les noms de classes à commencer par C, alors c'est assez faux et si vous ne pouvez pas le désactiver, n'utilisez pas Carbide. Vous devrez écrire vos propres fichiers mmp, mais ce n'est pas la fin du monde. Si c'est juste signaler des fonctions de sortie, alors c'est exact, votre API client multi-plateforme ne devrait pas partir, devrait-il? Ou va-t-il être documenté, "cette fonction part sur Symbian mais jette une exception sur Windows"? Je pense que c'est une mauvaise idée: il suffit d'offrir deux interfaces à votre bibliothèque si le comportement est différent. –

+0

En fait, je ne sais pas quelles conventions elle applique. Mon collègue, qui ferait des choses spécifiques à Symbian, m'a dit que nous ferions mieux de nous conformer à la convention, sinon des choses étranges pourraient se produire. Il n'est pas non plus un expert de Symbian. Nous essayons simplement de réutiliser du code qui fonctionne déjà sur Symbian et de le rendre utilisable ailleurs. – foraidt

Répondre

4

Les conventions de codage ne sont pas strictes. Ils sont là pour faciliter la compréhension du code pour nous les humains. Si vous écrivez une bibliothèque multiplateforme, n'hésitez pas à utiliser la convention avec laquelle vous êtes à l'aise.

Bien sûr, votre bibliothèque doit probablement s'interfacer avec le système d'exploitation sous-jacent à certains égards. Avec l'aide de Open C/C++ libraries, vous pouvez faire beaucoup de choses sans avoir besoin d'utiliser les API Symbian C++ natives et leurs conventions de nommage.

Dans Carbide.C++, vous pouvez désactiver l'analyse statique de CodeScanner car elle n'est vraiment utile que pour le code écrit en langage C++ natif.

Donc, en résumé, les problèmes sont les suivants:

  • Les gens qui viennent de l'arrière-plan Symbian C natif ne sont pas immédiatement familier avec vos conventions
  • utilisant Symbian C++ natif API peut exposer certaines particularités spécifiques à la plateforme (exceptions par rapport aux feuilles, harnais piège, ordonnanceurs actifs etc.)
  • analyseurs statiques spécifiques à Symbian, tels que le style Symbian CodeScanner prendre de code C++ et peut générer des erreurs/avertissements que vous ne avez pas vraiment besoin de se soucier de